您的位置:首页 > 其它

hdu 1028 Ignatius and the Princess III (母函数)

2014-10-03 10:02 302 查看
///整数拆分模版
///g(x)=(1+x+x^2...)(1+x^2+x^4...)(1+x^3+x^6...)
# include<stdio.h>
# include<algorithm>
# include<string.h>
# include<iostream>
using namespace std;
int main()
{
int n,i,j,k,c1[125],c2[125];
while(~scanf("%d",&n))
{
///初始化,对应第一个表达式(1+x+x^2....),这是i在(0,n)之间只有一种情况
for(i=0;i<=n;i++)
{
c1[i]=1;///保存各个数字可以组合的数目
c2[i]=0;///中间量,保存每一次的情况
}
///从第二个表达式开始
for(i=2;i<=n;i++)
{
for(j=0;j<=n;j++)///j从0到n枚举
{
for(k=0;k+j<=n;k+=i)///从k枚举第i个表达式的指数,第i个表达式的指数增量为i
{
c2[k+j]+=c1[j];
}
}
for(j=0;j<=n;j++)///把c2的值赋值给c1,因为每次c2都是从另一个表达式开始的
{
c1[j]=c2[j];
c2[j]=0;
}

}
printf("%d\n",c1
);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: