hdu1082

来源:互联网 发布:淘宝网秋季女裤yf1988 编辑:程序博客网 时间:2024/05/22 02:23

这道题是 典型的母函数问题;

其整数划分:

例如 4:可以看成 从 1,2 ,3,4;中选出数字出来组成4;

根据母函数的性质可以看成(1+x1+x2+x3+x4)(1+x2+x4)(1+x3)(1+x4);

以第一个括号里面的表达式来看:1代表不取,x1 代表取一个1 ,x2代表取两个1;

#include<iostream>using namespace std; int c[120],c1[120];int main(){int number;while(cin>>number){        int i,j,k; for(i=0;i<=number;i++) { c[i]=1; c1[i]=0; }     for(i=2;i<=number;i++) { for(j=0;j<=number;j++) { for(k=0;j+k<=number;k+=i) { c1[j+k]+=c[j]; } } for(j=0;j<=number;j++) { c[j]=c1[j]; c1[j]=0; } } cout<<c[number]<<endl;}}


0 0