这里有解释
代码如下
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int c1[51],c2[51];
int a[30];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int i;
memset(c1,0,sizeof(c1));
memset(c2,0,sizeof(c2));
for(i=1;i<=26;i++)
scanf("%d",&a[i]);
for(i=1;i<=26;i++){
if(a[i]!=0){
for(int j=0;j<=a[i];j++){
if(i*j>50) break;
c1[i*j]=1;
}
break;
}
}
for(i=i+1;i<=26;i++){
if(a[i]!=0){
for(int j=0;j<=50;j++){
if(c1[j]!=0){
for(int k=0;k<=a[i];k++)
{
if(j+k*i>50) break;
c2[j+k*i]+=c1[j];
}
}
}
for(int j=0;j<=50;j++)
{
c1[j]=c2[j];
c2[j]=0;
}
}
}
int sum=0;
for(i=1;i<=50;i++)
sum+=c1[i];
printf("%d\n",sum);
}
}