前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >母函数

母函数

作者头像
知识浅谈
发布2020-03-25 14:46:01
2180
发布2020-03-25 14:46:01
举报
文章被收录于专栏:分享学习
代码语言:javascript
复制
//我们需要把一个形如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;  
 }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档