zoukankan      html  css  js  c++  java
  • poj2229(Sumsets)

    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

    设dp[n]表示n的拆分数,若n是奇数,必能拆分出一个1,所以dp[n]=dp[n-1];若n是偶数,则n/2的所有拆分方法每个数乘以2后就是n的拆分方法,n还可以拆成1+1+(n-2),所以dp[n]=dp[n/2]+dp[n-2]

    #include <iostream>
    #include <sstream>
    #include <fstream>
    #include <string>
    #include <map>
    #include <vector>
    #include <list>
    #include <set>
    #include <stack>
    #include <queue>
    #include <deque>
    #include <algorithm>
    #include <functional>
    #include <iomanip>
    #include <limits>
    #include <new>
    #include <utility>
    #include <iterator>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <cctype>
    #include <cmath>
    #include <ctime>
    using namespace std;
    typedef long long LL;
    const int INF = 0x3f3f3f3f;
    const double PI = acos(-1.0);
    const double EPS = 1e-8;
    const int MAXN = 1000010;
    int dx[] = {0, 1, 0, -1}, dy[] = {-1, 0, 1, 0};
    
    int dp[MAXN] = {0, 1, 2};
    
    int main()
    {
        for (int i = 3; i < MAXN; ++i)
            dp[i] = (i&1) ? dp[i-1] : (dp[i/2] + dp[i-2]) % 1000000000;
        int n;
        cin >> n;
        cout << dp[n] << endl;
        return 0;
    }


  • 相关阅读:
    IOS开发中实现UITableView按照首字母将集合进行检索分组
    IOS开发中设置导航栏主题
    IOS中使用.xib文件封装一个自定义View
    IOS中将字典转成模型对象
    WindowsPhone8中LongListSelector的扩展解决其不能绑定SelectdeItem的问题
    WindowsPhone8.1 开发-- 二维码扫描
    tomcat 开机自启
    redis ubuntu 开机自启
    webStorm 中使用 supervisor 调试
    ubuntu 14.04 tab失效问题
  • 原文地址:https://www.cnblogs.com/godweiyang/p/12203980.html
Copyright © 2011-2022 走看看