本文共 1468 字,大约阅读时间需要 4 分钟。
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2082
母函数模板题:
思路假如 有 (x^0+x^2+x^4)*(x^0+x^3+x^6)*(x^0+x^4+x^8)*(....)*(........)
1 2 3 4 ..n
先算 1与2 能组合成多少种,假如结果为t1,那么算t1与3能有多少种,依次可得
代码:
//母函数#include#include #include using namespace std;int main(){ int t; while(cin>>t) { while(t--) { int a[100]={0},b[100]={0},c[100]={0}; int i,j,g; int k=50; for(i=1;i<=26;i++) { cin>>a[i]; } for(i=1;i<=26;i++) { if(a[i]) { for(j=0;j<=a[i]&&i*j<=k;j++) { b[i*j]=1; } break; } } for(i=i+1;i<=26;i++) { if(a[i]) { for(j=0;j<=50;j++) { if(b[j]) { for(g=0;g<=a[i]&&i*g+j<=k;g++) { c[i*g+j]+=b[j]; } } } for(j=0;j<=k;j++) { b[j]=c[j]; c[j]=0; } } } int sum=0; for(i=1;i<=k;i++) { sum+=b[i]; } cout< <
转载地址:http://tygji.baihongyu.com/