题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1028
题目大意:给出一个数字n,它可由若干正整数相加得到,问有几种方式可以得到n
解题思路:母函数入门题目。
AC代码:
#include <iostream>
using namespace std;
#define maxn 125
int main()
{
long long c1[maxn],c2[maxn];
int n;
while(cin>>n)
{
for(int i=0;i<=n;i++)
{
c1[i] = 1;
c2[i] = 0;
}
for(int i=2;i<=n;i++)
{
for(int j=0;j<=n;j++)
{
for(int k=0;k+j<=n;k+=i)
{
c2[k+j]+=c1[j];
}
}
for(int j=0;j<=n;j++)
{
c1[j] = c2[j];
c2[j] = 0;
}
}
cout<<c1[n]<<endl;
}
return 0;
}