题目描述
问题描述: 输入一个自然数n,然后对此自然数按照如下方法进行处理:
(1)不做任何处理;
(2)在它的左边加上一个自然数,但该数不能超过原数的一半;
(3)加上数后继续按此规则进行处理,直到不能再加自然数为止。
请找出以上操作能得到的数的个数。例如:n=6时,满足条件的数为6个:6、16、26、126、36、136。
提示:用递归函数解题
输入格式
输入格式: 一行一个正整n,n<=1000
输出格式
输出格式: 一行一个整数,表示满足条件的数的个数。
样例
样例输入:
6
样例输出:
6
数据范围与提示
n<=1000
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
int a[1100];
cin>>n;
a[1]=1;
a[2]=2;
for(int i=3;i<=n;i++){
if(i%2==0)
a[i]=a[i-1]+a[i/2];
else
a[i]=a[i-1];
}
cout<<a[n]<<endl;
return 0;
}