[2001年NOIP普及组] 数的计算
我们要求找出具有下列性质数的个数(包含输入的自然数n):
先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理:
1.不作任何处理;
2.在它的左边加上一个自然数,但该自然数不能超过原数的一半;
3.加上数后,继续按此规则进行处理,直到不能再加自然数为止。
先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理:
1.不作任何处理;
2.在它的左边加上一个自然数,但该自然数不能超过原数的一半;
3.加上数后,继续按此规则进行处理,直到不能再加自然数为止。
输入
输入一个自然数n(n<=1000)
输出
满足条件的数
样例输入
6
样例输出
6
当输入为6时
符合条件的数有
6
16
26
36
126
136
采用递归的思维解决
#include<iostream> using namespace std; int Counter; void WOK(int s) { if(s>1)//当最左边的数>1时 { for(int i=1;i<=s/2;++i)//枚举递归在在左边的所有情况 { Counter++;//不做任何处理的情况 WOK(i); } } } int main() { int a; cin>>a; WOK(a); cout<<Counter+1;//加上输入的数字 return 0; }

浙公网安备 33010602011771号