1 #include<bits/stdc++.h>
2 using namespace std;
3 const int maxv=1000;
4 int v[7]={0,1,2,3,5,10,20},w[1005],num[7],tot,f[1005],ans;
5 int main()
6 {
7 scanf("%d%d%d%d%d%d",&num[1],&num[2],&num[3],&num[4],&num[5],&num[6]);
8 for(int i=1;i<=6;++i)
9 {
10 int j;for(j=1;num[i]>=j;num[i]-=j,j<<=1) w[++tot]=j*v[i];//多重背包二进制拆分
11 if(num[i]) w[++tot]=num[i]*v[i];
12 }
13 f[0]=1;
14 for(int i=1;i<=tot;++i)
15 for(int j=maxv;j>=w[i];--j)
16 f[j]+=f[j-w[i]];
17 for(int i=1;i<=maxv;++i) if(f[i]) ++ans;//恰装满 扫描答案
18 printf("Total=%d",ans);
19 return 0;
20 }