P2347 [NOIP1996 提高组] 砝码称重 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int long long
const int N = 2e5+10;
int a[N],f[N];
int w[] = {0,1,2,3,5,10,20};
signed main()
{
std::ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int n=0,sum=0;
for(int i=1;i<=6;i++)
{
int cnt;cin>>cnt;
for(int j=1;j<=cnt;j++)
{
a[++n]=w[i];
sum+=w[i];
}
}
f[0]=1;
for(int i=1;i<=n;i++)
{
for(int j=sum;j>=a[i];j--)
{
f[j]=f[j-a[i]];
}
}
int ans=0;
for(int i=1;i<=sum;i++)
{
ans+=f[i];
}
cout<<"Total="<ans;
return 0;
}