题目1084:整数拆分 (递推)

题意:

问一个数拆分成2的幂的和的方法数有多少种。

 

我是先通过找列举前面的找规律

n   种数

1    1

2    2

3    2

4    4

5    4

6    6

7    6

8    10

9    10

10   14

……

 

 1 #include<stdio.h>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 #include<cstdlib>
 6 #include<cmath>
 7 #include<vector>
 8 #include<queue>
 9 #include<map>
10 #include<set>
11 
12 using namespace std;
13 
14 typedef long long ll;
15 
16 const int mod = 1000000000;
17 int f[1000010];
18 
19 void init()
20 {
21     f[1] = 1;
22     for(int i=2;i<=1000000;i++)
23     {
24         if(i&1) f[i] = f[i-1]%mod;
25         else f[i] = (f[i-1]+f[i/2])%mod;
26     }
27 }
28 
29 int main()
30 {
31     int n;
32     init();
33     while(~scanf("%d",&n))
34     {
35         printf("%d\n",f[n]);
36     }
37     return 0;
38 }
View Code

 

posted @ 2015-04-05 10:54  fukan  阅读(336)  评论(0编辑  收藏  举报