POJ

来源:互联网 发布:恶作剧软件 编辑:程序博客网 时间:2024/05/24 00:10

题解:

从1-10模拟一边,找找规律。

Farmer John 让奶牛们找一些数加起来等于一个给出的数N。但是奶牛们只会用2的整数幂。下面是凑出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 

帮助FJ找到 N的分配数 (1 <= N <= 1,000,000). 
Input
N.
Output
排列方式总数。由于这个数可能很大,只需要保留最后9位
Sample Input
7
Sample Output
6
Hint
打表的会被系统自动识别判为WA
#include <iostream>#include<vector>#include<cmath>#define inf 0x3f3f3f#define maxn 1000005using namespace std;int dp[maxn];int main(){    dp[1]=1;    dp[2]=2;    for(int i=3;i<=1000005;i++)    {        if(i&1)            dp[i]=dp[i-1];        else            dp[i]=(dp[i-1]+dp[i/2])%1000000000;    }    int n;    cin>>n;    cout<<dp[n]<<endl;    return 0;}


原创粉丝点击