poj2229Sumsets【dp】

来源:互联网 发布:游族网络有哪些游戏 编辑:程序博客网 时间:2024/06/08 11:10

Language:
Sumsets
Time Limit: 2000MS Memory Limit: 200000KTotal Submissions: 15326 Accepted: 6088

Description

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). 

Input

A single line with a single integer, N.

Output

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).

Sample Input

7

Sample Output

6

#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<cmath>#include<queue>#include<list>#include<vector>#define MOD 1000000000using namespace std;const int maxn=1000010;int num[35],dp[maxn];void init(){for(int i=0;i<30;++i){num[i]=1<<i;}}int main(){init();int n,i,j,k;while(scanf("%d",&n)!=EOF){memset(dp,0,sizeof(dp));dp[0]=1;for(i=0;i<30;++i){for(j=num[i];j<=n;++j){dp[j]+=dp[j-num[i]];dp[j]%=MOD;}}printf("%d\n",dp[n]);}return 0;}


0 0
原创粉丝点击