POJ2229 递推
来源:互联网 发布:java读取文本内容 编辑:程序博客网 时间:2024/06/04 20:06
Sumsets
Time Limit: 2000MS Memory Limit: 200000K
Total Submissions: 19030 Accepted: 7436
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的整数幂 所以 当n=基数的时候 dp[n]=dp[n-1];
先写出前面的几个数字的种数
dp[1]=1;
dp[2]=2;
dp[3]=2;
dp[4]=4;
dp[5]=4;
dp[6]=6;
dp[7]=6;
不难发现规律 n为基数时 dp[n]=dp[n-1] n位偶数时 dp[n]=dp[n-2]+dp[n-2];
AC代码
import java.util.Scanner;public class Main{ /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); int dp[]=new int[1000005]; dp[1]=1; dp[2]=2; for(int i=3;i<=1000000;i++){ if(i%2!=0){ dp[i]=dp[i-1]; } else{ dp[i]=dp[i-2]+dp[i/2]; } if(dp[i]>1000000000){ dp[i]%=1000000000; } } int n=scan.nextInt(); System.out.println(dp[n]); }}
- POJ2229 递推
- POJ2229 Sumsets 【递推】
- poj2229(递推)
- POJ2229 (递推)
- POJ2229 递推
- Poj2229-Sumsets-【递推】
- 递推-HDU2709&POJ2229
- poj2229
- poj2229
- poj2229
- poj2229
- poj2229
- poj2229
- dp-poj2229
- poj2229 Sumsets
- poj2229 Sumsets
- POJ2229 Sumsets
- POJ2229 Sumsets
- 修改用户的shell
- mybatis动态sql中的trim标签的使用
- 《大话设计模式》——读后感 (5)雷锋依然在人间?——工厂方法模式
- Raft 分布式一致性算法
- ButterKnife onclick点击事件没反应问题
- POJ2229 递推
- linux环境下常见指令(上)
- 《大话设计模式》——读后感 (6)老板回来了,我不知道?——观察者模式之理论实例(1)
- linux环境下安装JDK
- hdu2564
- 前端缓存学习1
- Python 高级图像处理
- Javascript 创建对象实例的几种方法
- 《大话设计模式》——读后感 (6)老板回来了,我不知道?——观察者模式之事件委托(2)