#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 130;
int c1[maxn],c2[maxn];//c1[i] x^i表示的系数 c2为中间的项
int main()
{
int n;
while(~scanf("%d",&n))
{
for(int i=0;i<=n;i++)//初始化
{
c1[i]=1;
c2[i]=0;
}
for(int i=2;i<=n;i++)//计算i之前的表达式和第i个表达式合并后的结果
{
for(int j=0;j<=n;j++) //枚举i之前已经合并的表达式的各项
for(int k=0;k+j<=n;k+=i) //枚举第i个表达式的各项 他们的幂为k 步长为i
{
c2[j+k]+=c1[j]; //合并
}
for(int j=0;j<=n;j++)
{
c1[j]=c2[j];
c2[j]=0;
}
}
printf("%d\n",c1[n]);
}
return 0;
}
hdu1028(母函数)
最新推荐文章于 2021-06-14 13:11:08 发布