p.s.个人收录用
题目描述
我们要求找出具有下列性质数的个数(包含输入的自然数n):
先输入一个自然数n(n≤1000), 然后对此自然数按照如下方法进行处理:
1.不作任何处理;
2.在它的左边加上一个自然数,但该自然数不能超过原数(输入的n)的一半;
3.加上数后,继续按此规则进行处理,直到不能再加自然数为止。
输入
输入一个自然数n(n≤1000)
输出
输出满足条件的数的个数
样例输入 Copy
6
样例输出 Copy
6
提示
满足条件的数为 6 (此部分不必输出)
16
26
126
36
136
举例
1
2
12
3
13
4
14
24
124
代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
#include <string.h>
//数的计数
int n;
long long int a[1005] = { 0 };//满足条件的数的数量
long long int num(int i)
{
if (a[i])
return a[i];
for (int k = 0; k <= i / 2; k++)
{
a[i] += num(k);
}
return a[i];
}
int main()
{
scanf("%d", &n);
a[0] = 1; a[1] = 1; a[2] = 2; a[3] = 2; a[4] = 4;
printf("%lld\n", num(n));
}