标签:
一个整数可以拆分为2的幂的和,例如:
7 = 1+ 2 +
4
7 = 1 + 2
+ 2 + 2
7 = 1 + 1
+ 1 + 4
7 = 1 + 1
+ 1 + 2 + 2
7 = 1 + 1
+ 1 + 1 + 1 + 2
7 = 1 + 1
+ 1 + 1 + 1 + 1 + 1
总共有六种不同的拆分方式
再比如: 4可以拆分成:
4 = 4, 4 = 1+1+1+1, 4 = 2+2, 4 = 1+1+2.
用f(n)表示n的不同拆分的种数,例如f(7)
= 6.
要求读入n(不超过1000000),输出f(n)
% 1000000000。
import java.util.Scanner;
public class Main {
static int[] num = {1,2,5,10,20,50,100};
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while(scan.hasNext()){
int input = scan.nextInt();
if(input < 1){
return;
}
System.out.println(getNumber(input));
}
}
public static int getNumber(int n){
if(n == 1){
return 1;
}
if(n == 2){
return 2;
}
if(n % 2 != 0){
return getNumber(n-1)%1000000000;
}else{
return getNumber(n-2)%1000000000+getNumber(n/2)%1000000000;
}
}
}
标签:
原文地址:http://blog.csdn.net/lpjishu/article/details/51868241