1010_数的计算
来源:互联网 发布:wow数据库7.0 编辑:程序博客网 时间:2024/05/01 16:25
比赛描述
要求找出具有下列性质数的个数(包含输入的自然数n):
先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理:
1. 不作任何处理;
2. 在它的左边加上一个自然数,但该自然数不能超过原数的一半;
3. 加上数后,继续按此规则进行处理,直到不能再加自然数为止.
先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理:
1. 不作任何处理;
2. 在它的左边加上一个自然数,但该自然数不能超过原数的一半;
3. 加上数后,继续按此规则进行处理,直到不能再加自然数为止.
输入
一个自然数n
输出
一个数,表示满足条件的数的个数
样例输入
6
样例输出
6
提示
样例说明:满足条件的数是6,16,26,126,36,136
题目来源
NOIP2001 普及组
本题容易想到的是递归算法,但是递归算法用于本题效率效率过低,可以用数组存储计算过的,以提高代码的效率。
代码如下:
#include <iostream>using namespace std;int fn(int n);int main(){int n;cin >> n;if (n<0 || n>1000)return 0;cout << fn(n) << endl;return 0;}int fn(int n){static int num[1000] = { 0 };//用于记录以及算过的,防止重复就算提高递归的效率int count = 1;//初始算一个,记录个数if (num[n] != 0)//算过则直接返回return num[n];if (n == 1 || n == 0)return 1;for (int i = 1; i <= n / 2; i++)count += fn(i);num[n] = count;//存储算过的值return num[n];}递归法参考来源:http://blog.csdn.net/changshu1/article/details/47252207
还可以用递推的方法去解本题,从小到大依次算出。
可参考:http://blog.csdn.net/yixiang1989/article/details/36657741
0 0
- 1010_数的计算
- 1019_计算二叉树的高度和结点数
- 14_扫雷游戏地雷数计算
- 南邮 OJ 1010 数的计算
- 路径数的计算
- 数的计算
- 数的计算
- 数的计算
- 数的乘法计算
- 数的乘法计算
- 数的计算
- 数的乘法计算
- 数的乘法计算
- 数的乘法计算
- 数的乘法计算
- 数的乘法计算
- 【深搜】数的计算
- 并发数的计算
- 日本公司就30名员工在泰群裸道歉,泰中日三国网友观点各异!丨暹罗猫佛牌
- doT.js 爱好者
- iOS按钮防止连续点击 可以自己设置响应间隔
- 找了很久的bug
- Android学习之 图解调用invalidate()和requestLayout()的过程
- 1010_数的计算
- 蓝桥杯入门训练 Fibonacci数列
- Bootstrap 引入 栅栏系统 文本 表格 类
- Hive开发经验问答式总结
- 使用echarts类库,在后台封装option,提供两种使用struts2传递参数到页面的方法
- OpenStack 峰会论文的视频
- 系统变慢怎么办
- 文章的基本要素和训练
- C++ 异常处理