poj 2229 Sumsets 【动态规划】

简介: 点击打开题目 Sumsets Time Limit: 2000MS   Memory Limit: 200000K Total Submissions: 13291   Accepted: 5324 Description Far...

点击打开题目

Sumsets
Time Limit: 2000MS   Memory Limit: 200000K
Total Submissions: 13291   Accepted: 5324

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
题目翻译:给出一个数字n,给出一个集合{1,2,4,8,16,32,64。。。。},求n有多少种不同的由集合内的数字的加和情况。

解题思路:本以为是母函数,但是在网上搜了一下结果发现是递推,可以有前面推出后面的结果,原因是和2的指数关系有关。

#include<cstdio>
int dp[1000000+5]={0,1,2,2},i,n;
int main(){
    while(scanf("%d",&n)==1){
        for(i=4;i<=n+1;i+=2){
            dp[i-1]=dp[i-2];
            dp[i]=(dp[i-1]+dp[i>>1])%1000000000;
        }
        printf("%d\n",dp[n]);
    }
    return 0;
}

目录
相关文章
【动态规划】198. 打家劫舍
【动态规划】198. 打家劫舍
|
5月前
|
Java Go C++
Leetcode70. 爬楼梯(动态规划)
Leetcode70. 爬楼梯(动态规划)
29 0
|
算法
【学会动态规划】打家劫舍 II(12)
【学会动态规划】打家劫舍 II(12)
28 0
|
存储 Cloud Native Go
198. 打家劫舍:动态规划
这是 力扣上的 198. 打家劫舍,难度为 中等。
|
Go Cloud Native
213. 打家劫舍 II:动态规划
这是 力扣上的 213. 打家劫舍 II,难度为 中等。
|
机器学习/深度学习 Cloud Native Go
337.打家劫舍 III:动态规划
这是力扣上的 337. 打家劫舍 III,难度为 中等。
动态规划-打家劫舍和股票买卖
前言 本篇文章我们来学习下动态规划中的两个经典题型,打家劫舍和股票买卖,通过两个题型来巩固动态规划解题思路。
|
测试技术
动态规划之打家劫舍
动态规划之打家劫舍
116 0
动态规划之打家劫舍
HDU 4283 You Are the One(动态规划)
HDU 4283 You Are the One(动态规划)
79 0
HDU 4283 You Are the One(动态规划)
LeetCode——爬楼梯(动态规划)
LeetCode——爬楼梯(动态规划)
158 0
LeetCode——爬楼梯(动态规划)