HDOJ 1028 Ignatius and the Princess III [母函数]

求解思路:

整数的拆分问题,并且可重复,则得出以下式子
(1+x+x^2+x^3+...+x^n)(1+x^2+x^4+...)(1+x^3+x^6...)...
把上面的母函数转化成代码就可以了。

AC代码:

//母函数 #include <iostream> using namespace std; const int MaxSize=121; int c1[MaxSize],c2[MaxSize]; int main() { int i,j,k,n; for(i=0;i<MaxSize;++i) c1[i]=1,c2[i]=0; for(i=2;i<MaxSize;++i) { for(j=0;j<MaxSize;++j) for(k=j;k<MaxSize;k+=i) c2[k]+=c1[j]; for(j=0;j<MaxSize;++j) c1[j]=c2[j],c2[j]=0; } while(cin>>n) cout << c1[n] << endl; return 0; }

你可能感兴趣的:(HDOJ 1028 Ignatius and the Princess III [母函数])