NOIP200101数的计算

试题描述
 我们要求找出具有下列性质数的个数(包含输入的自然数n):先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理:
1.不作任何处理;
2.在它的左边加上一个自然数,但该自然数不能超过原数的一半;
3.加上数后,继续按此规则进行处理,直到不能再加自然数为止.
输入
仅包含一个数n
输出
一个数,表示满足题目描述性质的数的个数。
输入示例
6
输出示例
6
其他说明
样例说明:满足条件的数为  6  16  26  126  36  136
 

叶子数。有多种方法。

 1 //前缀和 
 2 #include <iostream>
 3 
 4 using namespace std;
 5 int h[1010],s[1010];
 6 int main()
 7 {
 8     int n;
 9     scanf("%d",&n);
10     for(int i=1;i<=n;i++)
11     {
12         h[i]=s[i/2]+1;
13         s[i]=s[i-1]+h[i];
14     }
15     printf("%d",h[n]);
16     return 0;
17 } 
NOIP200101数的计算(1)
 1 //递推 
 2 #include <iostream>
 3 
 4 using namespace std;
 5 int h[1010];
 6 int main()
 7 {
 8     int n;
 9     scanf("%d",&n);
10     for(int i=1;i<=n;i++)
11     {
12         h[i]=1;
13         for(int j=1;j<=i/2;j++) h[i]=h[i]+h[j];
14     }
15     printf("%d",h[n]);
16     //system("pause");
17     return 0;
18 }
NOIP200101数的计算 (2)
原文地址:https://www.cnblogs.com/YXY-1211/p/5670115.html