2229:Sumsets
-
总时间限制:
- 2000ms 内存限制:
- 200000kB
-
描述
-
Farmer John commanded his cows to search for different sets of numbers that sum to a given number. The cows use only numbers that are an integer power of 2. Here are the possible sets of numbers that sum to 7:
1) 1+1+1+1+1+1+1
2) 1+1+1+1+1+2
3) 1+1+1+2+2
4) 1+1+1+4
5) 1+2+2+2
6) 1+2+4
Help FJ count all possible representations for a given integer N (1 <= N <= 1,000,000).
输入
- A single line with a single integer, N. 输出
- The number of ways to represent N as the indicated sum. Due to the potential huge size of this number, print only last 9 digits (in base 10 representation). 样例输入
-
7
样例输出
-
6
来源
USACO 2005 January Silver
代码:
#include<cstdio>
#include<cstring>
const int MAX=10000010;
const int mod=1000000000;
long long a[MAX]={0,1};
int main(){
for(int i=2;i<MAX;i++){
if(i&1)
a[i]=a[i-1];
else
a[i]=(a[i/2]+a[i-1])%mod;
}
long long n;
while(scanf("%lld",&n)!=EOF)
printf("%lld\n",a[n]);
return 0;
}