题解 1886: 蓝桥杯2017年第八届真题-包子凑数

来看看其他人写的题解吧!要先自己动手做才会有提高哦! 
返回题目 | 我来写题解

筛选

蓝桥杯2017年第八届真题-包子凑数 (C++代码)

摘要:解题思路:另数组全部为0,能够装出来的设为1(遍历大数组,不停的往后迭代,若b[i-a[j]]不是0,即可赋值,具体如下),最后数数注意事项:判断公约数 哦参考代码:#include <iostrea……

蓝桥杯2017年第八届真题-包子凑数 -题解(C++代码) 完全背包 + 暴力 + 空间优化

```cpp思路:所有背包类问题,一定要知道一点,当前第i个物品进不进背包,进背包后的结果是不是最优的,背包ok之后再来一波暴力,直接甩个背包容量100W,如果超过10w个数拼不出来,就认为有无限个数拼不出来空间优化:滚动数组ps:实际上这道题是欧几里得+背包的题首先如果N种蒸笼的包子数是互质的,

蓝桥杯2017年第八届真题-包子凑数 -题解(C++代码)

```cpp/*包子凑数小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子。每种蒸笼都有非常多笼,可以认为是无限笼。每当有顾客想买X个包子,卖包子的大叔就会迅速选出若干笼包子来,使得这若干笼中恰好一共有X个包子。

蓝桥杯2017年第八届真题-包子凑数 -题解(C++代码)思路清晰、易懂

###解题思路:###这里用到裴蜀定理:任意两个数的组合必定是他们gcd的任意两个数的组合必定是他们gcd的倍数。同样可以推广到更多数:如果这些数的gcd是d,那么他们的组合是d的倍数,如果d不是1,那么必然有无限个数无法被组合出来。##首先结论是如果所有的数的最大公约数不为1,