• POJ-2229


    Sumsets
    Time Limit: 2000MS   Memory Limit: 200000K
    Total Submissions: 19599   Accepted: 7651

    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,求n有多少种由2的幂次之和组成的方案. 

    当n为奇数的时候,那么所求的和式中必有1,则dp[n]==dp[n-1];

    当n为偶数的时候,可以分两种情况:

    1.含有1,个数==dp[n-1];

    2.不含有1,这时每个分解因子都是偶数,将所有分解因子都除以二,所得的结果刚好是n/2的分解结果,并且一一对应,则个数为dp[n/2];

    AC代码:

     1 //#include<bits/stdc++.h>
     2 #include<iostream>
     3 #include<cstring>
     4 using namespace std;
     5 
     6 const long long MOD=1000000000;
     7 
     8 int dp[1000010];
     9 
    10 int main(){
    11     ios::sync_with_stdio(false);
    12     int n;
    13     while(cin>>n&&n){
    14         memset(dp,0,sizeof(dp));
    15         dp[1]=1;
    16         for(int i=2;i<=n;i++){
    17             if(i&1){
    18                 dp[i]=dp[i-1];
    19             }
    20             else{
    21                 dp[i]=(dp[i-1]+dp[i>>1])%MOD;
    22             }
    23         }
    24         cout<<dp[n]<<endl;
    25     }
    26     return 0;
    27 }
  • 相关阅读:
    effective c++ 笔记 (30-31)
    设计模式 笔记 装饰模式 Decorator
    设计模式 笔记 组合模式 Composite
    设计模式 笔记 外观模式 Facade
    effective c++ 笔记 (26-29)
    设计模式 笔记 桥接模式 Bridge
    设计模式 笔记 适配器模式 Adapter
    算法导论 第二章作业
    设计模式 创建型模式实践
    设计模式 笔记 单例模式 Singleton
  • 原文地址:https://www.cnblogs.com/Kiven5197/p/7347899.html
Copyright © 2020-2023  润新知