zoukankan      html  css  js  c++  java
  • hdu 2709:Sumsets(递推)

    http://acm.hdu.edu.cn/showproblem.php?pid=2709

    Problem 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

    题意分析:

    只使用整数幂为2的数字拼凑数字,求一个有多少种可能。

    解题思路:

    一个奇数,可能数和比它小1的数相同,

    比如9和8,把它分成1和8,8那一部分就是a[8],而这边的1不能再操作。

    一个偶数8分成1和77那一部分是a[7],再加上一个1

    从1 1 2 2 2 开始,变成2 2 2 2,后面的情况就像是4个1来组成4一样,有a[4]种,即a[i/2]。

    所以有公式i为奇数时:  a[i]=a[i-1];

                      i为偶数时:  a[i]=a[i-1]+a[i/2];     

    #include <stdio.h>
    #define N 1000020
    int a[N];
    int main()
    {
    	int n;
    	a[1]=1;
    	for(int i=2; i<N; i++)
    		if(i%2==1)
    			a[i]=a[i-1];
    		else
    			a[i]=(a[i-1]+a[i/2])%1000000000; 
    	while(scanf("%d", &n)!=EOF)
    		printf("%d
    ", a[n]);
    	return 0;
    } 
  • 相关阅读:
    读书计划(2020年秋)
    Hbase 常用Shell命令
    假期第三周总结
    语义分析
    虚拟机安装
    掌握需求过程读后感
    第八周总结
    SLR1分析
    第七周总结
    需求工程阅读笔记(三)
  • 原文地址:https://www.cnblogs.com/zyq1758043090/p/11852537.html
Copyright © 2011-2022 走看看