母函数

举报
知识浅谈 发表于 2022/06/28 22:26:50 2022/06/28
【摘要】 //我们需要把一个形如G(x)=(1+X^1+X^2+X^3+…)(1+X^2+X^4+X^6+…)….这样的函数 //    转换成形如F(x)=1+X+X^2 +2*X^3 +2*X^4+2*X^5...

//我们需要把一个形如G(x)=(1+X^1+X^2+X^3+…)(1+X^2+X^4+X^6+…)….这样的函数
//    转换成形如F(x)=1+X+X^2 +2*X^3 +2*X^4+2*X^5+2*X^6+2*X^7+X^8+X^9+X^10 的函数/
#include
#include
#include
using namespace std;
const int max1=10001;
//有两个数组 c1表示的是 c2 是中间临时数组 母函数(1+x^1+x^2+…+x^n)(1+x^2+x^4+x^6)..(根表示的是比如第一个括号中为1第二个中为2 表示的是以根为第一次增加)指数/根表示的是用
int c1[max1],c2[max1];
int main()
{
int n; //表示个数
while(~scanf(“%d”,&n))
{
for(int i=0;i<=n;i++){
c1[i]=1; //表示的是x^i 的系数都初始化为1其实就是表示的每个x^i 都会有一种情况就是只有x^1变成
c2[i]=0;
}
for(int i=2;i<=n;i++)//将G(x)的第二个括号乘入F(x)中c1[i]也就是相当于便是f[x]中的x^i的系数
{
for(int j=0;j<=n;j++)//表示的是fx中的对应的x^i 的系数与第二个括号里的相乘
{
for(int k=0;k+j<=n;k+=i){ //因为就相当于每次都是以i为根的向上加
c2[j+k]+=c1[j];//将F(x)中第一项与G(x)中第二个括号的每一项相乘且想成之后指数就变成了k+j
}
}
for(int j=0;j<=n;j++)
{
c1[j]=c2[j];
c2[j]=0;
}
}
printf(“%d\n”,c1[n]);//表示能组成n的有多少种情况
}
return 0;
}

文章来源: englishcode.blog.csdn.net,作者:知识浅谈,版权归原作者所有,如需转载,请联系作者。

原文链接:englishcode.blog.csdn.net/article/details/80009121

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。