Problem Description
我们要求找出具有下列性质数的个数(包括输入的自然数n)。先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理:不作任何处理;
在它的左边加上一个自然数,但该自然数不能超过原数的一半;
加上数后,继续按此规则进行处理,直到不能再加自然数为止。
Input
输入有多组数据,每组数据为自然数n。Output
对于每组数据输出满足条件的数的个数。Sample Input
6Sample Output
6Hint
满足条件的数为6,16,26,126,36,136。
#include<stdio.h>
#include<string.h>
int dp[1010];
void fun()
{
int sum=1,i,j;
memset(dp,0,sizeof(dp));
for(i=1;i<1010;i++)
dp[i]=1;
for(i=2;i<1010;i++)
for(j=1;j<=i/2;j++)
dp[i]+=dp[j];
}
int main()
{
//freopen("b.txt","r",stdin);
int m;
fun();
while(scanf("%d",&m)==1)
{
printf("%d\n",dp[m]);
}
return 0;
}