【问题描述】
给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下:
(1)n∈set(n);
(2)在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半;
(3)按此规则进行处理,直到不能再添加自然数为止。
例如,set(6)={6,16,26,126,36,136}。半数集set(6)中有6个元素。注意,该半数集是多重集。
对于给定的自然数n,计算半数集set(n)中的元素个数。
【输入形式】只有1行,给出整数n(0<n<1000)
【输出形式】只有1行,给出半数集set(n)中的元素个数
【样例输入】
6
【样例输出】
6
#include<iostream>
using namespace std;
int set_count(int n){
int sum=1;
if(n<1) return 1;
for(int i=1;i<=(n/2);i++){
sum=sum+set_count(i);
}
return sum;
}int main(){
int n,m;
cin>>n;
m=set_count(n);
cout<<m<<endl;
}