题目:

"Well, it seems the first problem is too easy. I will let you know how foolish you are later." feng5166 says.

"The second problem is, given an positive integer N, we define an equation like this: 
  N=a[1]+a[2]+a[3]+...+a[m]; 
  a[i]>0,1<=m<=N; 
My question is how many different equations you can find for a given N. 
For example, assume N is 4, we can find: 
  4 = 4; 
  4 = 3 + 1; 
  4 = 2 + 2; 
  4 = 2 + 1 + 1; 
  4 = 1 + 1 + 1 + 1; 
so the result is 5 when N is 4. Note that "4 = 3 + 1" and "4 = 1 + 3" is the same in this problem. Now, you do it!" 

InputThe input contains several test cases. Each test case contains a positive integer N(1<=N<=120) which is mentioned above. The input is terminated by the end of file. 
OutputFor each test case, you have to output a line contains an integer P which indicate the different equations you have found. 
Sample Input

4
10
20

Sample Output

5
42
627

题意分析:

这题是对母函数的另一个应用,整数的拆分。

我们可以把每个数的数值当作母函数经典例题中的砝码的质量。然后把需要凑的总数值当作砝码需要称的质量,这题就比较好理解了。

打表,控制指数在120以内。

AC代码:

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int MAXN = 120;
int C1[MAXN+3], C2[MAXN+3]; void solve()
{
int i, j, k;
for(i = 0; i <= MAXN; i++)
{
C1[i] = 1;
C2[i] = 0;
}
for(i = 2; i <= MAXN; i++)
{
for(j = 0; j <= MAXN; j++)
{
for(k = 0; k+j <= MAXN; k+=i)
{
C2[k+j] += C1[j];
}
}
for(j = 0; j <= MAXN; j++)
{
C1[j] = C2[j];
C2[j] = 0;
}
}
} int main()
{
int N;
solve();
while(scanf("%d", &N)!=EOF)
{
printf("%d\n", C1[N]);
}
return 0;
}

  

最新文章

  1. windows XP上实现python2.7.5和python3.4.3共存
  2. C#反射机制 Type类型
  3. jQuery 利用 parent() parents() 寻找父级 或祖宗元素
  4. OC基础--对象做参数在方法间传递
  5. [转发]Linux的系统调用宏
  6. html5 notification桌面提醒功能
  7. SEO之链接农场、内容农场、微信内容农场
  8. 李洪强iOS开发之【零基础学习iOS开发】【02-C语言】07-基本数据类型
  9. istringstream、ostringstream、stringstream 类介绍 .
  10. android设备连接不上电脑的解决方法
  11. java异常类的使用
  12. Java虚拟机之垃圾回收详解一
  13. extjs的相关属性
  14. Java Swing Graphics Graphics2D的一般用法
  15. 数据结构与算法(C/C++版)【绪论/线性表】
  16. 结合Socket实现DDoS攻击
  17. Scikit-learn:scikit-learn快速教程及实例
  18. git commit之后,想撤销commit
  19. BeanFactory和ApplicationContext的简单介绍
  20. 第16课 右值引用(3)_std::forward与完美转发

热门文章

  1. 微信小程序怎么获取用户输入
  2. zookeeper 面试题 有用
  3. 在Ubuntu安装Tomcat7.0及开机自动运行
  4. java方法学习记录
  5. 数字图像处理实验(16):PROJECT 06-03,Color Image Enhancement by Histogram Processing 标签: 图像处理MATLAB 2017
  6. 2.Books
  7. easyui-dialog 弹窗
  8. Java 自定义异常类
  9. Aircrack使用
  10. c#缓存介绍