Ignatius and the Princess III(母函数)
2015-10-20 15:00
190 查看
题目地址
题目大意:给出数n,求由比数n相加的和为n的加法的种类,每个数可用多次,交换顺序为同一种加法
解题思路:母函数模板
G( x ) = (1 + x + x^2 +····) * ( 1 + x^2 + x^4 + ····) * ( 1 + x^3 + x^6+....)*......
题目大意:给出数n,求由比数n相加的和为n的加法的种类,每个数可用多次,交换顺序为同一种加法
解题思路:母函数模板
G( x ) = (1 + x + x^2 +····) * ( 1 + x^2 + x^4 + ····) * ( 1 + x^3 + x^6+....)*......
#include <bits/stdc++.h> using namespace std; const int maxn = 10001; int c1[maxn],c2[maxn];// c1是保存可以相加构成数n的种数 ,c2是中间量,保存每一次的情况 int main() { int nNum; while(scanf("%d",&nNum) != EOF) { for(int i=0; i<=nNum; i++) //初始化数n的构成有1种(第一条表达式的初始化) { c1[i] = 1; c2[i] = 0; } for(int i=2; i<=nNum; i++)//对于第2个表达式到第n个表达式 { for(int j=0; j<=nNum; j++)//对于第j个变量(x^j) { for(int k=0; k+j<=nNum; k+=i) //对于第i个表达式的每个变量 { c2[j+k] += c1[j]; } } for(int j=0; j<=nNum; j++)//对于每条表达式从0开始 { c1[j] = c2[j]; c2[j] = 0; } } printf("%d\n",c1[nNum]); } return 0; }
相关文章推荐
- java list三种遍历方法性能比较
- 如何打造真正可动态扩展的服务架构
- Oracle 外部表说明及简单范例
- hibernate4.0+springMVC+shoir时报错javax.persistence.OneToMany.orphanRemoval()Z
- C++的private的属性或方法真的不能访问吗? no
- 本期介绍SBJson的用法,收集。
- spring mvc i18n设置
- 程序员累了怎么办-兄弟连IT教育
- 旅行售货员问题
- 线性表的链式表示和实现
- maven 打jar 包 并将所有依赖打到jar里面
- 冒泡排序
- Java中的值传递和引用传递
- 8 种 NoSQL 数据库系统对比
- mysql查询中字符串转换成数字
- 外壳exe通过反射调用dll时
- activity之间传递对象
- 如何基于OpenShift进行微信公众号开发
- JDOM及DOM4J解析xml文件
- php 静态类与非静态类