问n可以拆分成多少种整数的和的形式 (5=2+3 5=3+2 算一种)
有数论的做法更快,这里介绍的是母函数的方法
#include<iostream>
#include<cstring>
using namespace std;
int a[121],b[121];//x^i 的系数
int main()
{
int n;
while(cin>>n)
{
memset(b,0,sizeof(b));
memset(a,0,sizeof(a));
a[0]=1;//x^0的系数为1,其他为0
for(int i=1;i<=n;i++)//(1+x^i+x^(2*i)+x^(3*i).....)
{
for(int j=0;j<=n;j++)//x^j
{
for(int k=0;k*i+j<=n;k++) b[k*i+j]+=a[j];//计算新x^(k*i+j)的系数
}
for(int j=0;j<=n;j++) a[j]=b[j];
memset(b,0,sizeof(b));
}
cout<<a[n]<<endl;
}
}