首页 > 代码库 > hdu 1028 Ignatius and the Princess III (母函数)
hdu 1028 Ignatius and the Princess III (母函数)
///整数拆分模版 ///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[n]); } return 0; }
hdu 1028 Ignatius and the Princess III (母函数)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。