NOIP 2001 数的计数

 

Description
先输入一个自然数n(n≤3000000),然后对此自然数按照如下方法进行处理
1•不作任何处理:
2•在它的左边加上一个自然数,但该自然数不能超过原数的一半;
3•加上数后,继续按此规则进行处理,直到不能再而 自然数为止。
例如
n=6
  6
 16
 26
126
 36
136
所以满足要求的个数为6。

Input
一个整数n(1<=n<=3000000)

Output
一个整数,表示解的个数(保证不超过50位)

Sample Input
6

Sample Output
6

 
公式
n为奇数时,h[n]=h[n-1]
n为偶数时,h[n]=h[n-1]+h[n/2]
 
var
    a:array[1..1200] of longint;
    i,n:longint;
begin
    readln(n);
    a[1]:=1;
    for i:=2 to n do
        if odd(i) then a[i]:=a[i-1]
        else a[i]:=a[i-1]+a[i div 2];
    writeln(a[n]);
end.

 

posted @ 2015-11-26 17:09  qilinart  阅读(339)  评论(0)    收藏  举报