现有n个砝码,第i个砝码的重量为ai,你至多能选择三个砝码进行称重,请问对于1~w中的所有整数,有多少数字能被这n个砝码称出来?
Input单组测试数据,第一行输入两个正整数n(1≤n≤300),w(1≤w≤1000000),第二行输入n个正整数ai(1≤ai≤1000000),含义如题所述。
Output输出1~w能被称出来的数量。
Sample Input4 12
3 3 3 3
Sample Output3
HINT对于样例,只有3,6,9这三个整数能被称出来。
3=a1
6=a1+a2
9=a1+a2+a3
注意12由于需要四个砝码才能称出,故不计入答案。
学习了一下同学的代码。
解析:数据比较小,我们可以之间开1000000的数组来存是否能称出该值的重量,直接暴力干起来。例如a[1]=3,a[2]=4,我们可以称出a[1]+a[2]=7重量。因此我们分三种情况,一个砝码,二个砝码,三个砝码,分别利用for来存哪些重量可以实现。
#includeint a[305],b[1000005]; int main() { int n,w,i,s,z,cnt=0; scanf("%d%d",&n,&w); for(i=0;i



