题目链接:Click here~~
母函数第一题。大概能看懂了。
#include <stdio.h>
#include <string.h>
const int MAX=50;
int c1[MAX+5],c2[MAX+5],num[27];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
memset(c1,0,sizeof(c1));
memset(c2,0,sizeof(c2));
for(int i=1;i<=26;i++)
scanf("%d",&num[i]);
c1[0]=1; //相当于用X^0去乘以后面的多项式
for(int i=1;i<=26;i++) //要乘以26个多项式
{
for(int j=0;j<=MAX;j++) //c1的各项的指数
{
for(int k=0;k<=num[i] && j+k*i<=MAX;k++) //k*i表示被乘多项式各项的指数,(X^0*i + X^1*i + X^2*i + ……)
c2[j+k*i] += c1[j]; //指数相加得j+k*i,加多少只取决于c1[j]的系数,因为被乘多项式的各项系数均为1
}
memcpy(c1,c2,sizeof(c2));
memset(c2,0,sizeof(c2));
}
int ans=0;
for(int i=1;i<=MAX;i++)
ans += c1[i];
printf("%d\n",ans);
}
return 0;
}