//母函数模板
//形如(1+x^1+x^2+x^3+....+x^n)*(1+x^2+x^4+x^6+....+x^n)*......(1+x^m+x^2m+x^3m+....+x^n)
#include<iostream> using namespace std; const int lmax=10000; int c1[lmax+1],c2[lmax+1]; int main() { int n,i,j,k; while(cin>>n) { for(i=0;i<=n;i++) { c1[i]=1;c2[i]=0; } for(i=0;i<=n;i++) c1[i]=1; for(i=2;i<=n;i++)//一共有几个大括号(以第一个大括号为首,从与第二个大括号开始乘, //一直往下乘,直到完全算完,只有一个大括号) { for(j=0;j<=n;j++)//第一个大括号中的所有元素 for(k=0;k+j<=n;k+=i)//第i个大括号中的所有元素 {c2[j+k]+=c1[j];} for(j=0;j<=n;j++)//得到一个新的第一个大括号 { c1[j]=c2[j];c2[j]=0; } } cout<<c1[n]<<endl; } return 0; }
时间: 2024-11-05 17:42:05