首页 > 其他 > 详细

tyvj[1087]sumsets

时间:2016-12-04 17:01:46      阅读:493      评论:0      收藏:0      [点我收藏+]

描述

    正整数N可以被表示成若干2的幂次之和。例如,N = 7时,共有下列6种不同的方案:
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
    给出正整数N,计算不同方案的数量(保留最后9位数字)。

输入格式

一个整数,表示正整数N。

输出格式

一个整数,表示不同方案的数量。

测试样例1

输入

7

输出

6

备注

 1 <= N <= 1000000

题解

#include<iostream>
using namespace std;
int n,bin[21],f[1000001];
int main(){
    cin>>n;
    bin[0]=1;
    for(int i=1;i<=20;i++)
        bin[i]=bin[i-1]<<1;
    f[0]=1;
    for(int i=0;i<=20;i++)
        for(int j=bin[i];j<=n;j++)
            f[j]=(f[j]+f[j-bin[i]])%1000000000;
    cout<<f[n]<<endl;
    return 0;
}

 

tyvj[1087]sumsets

原文:http://www.cnblogs.com/keshuqi/p/6130947.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!