1018: Give me the answer
Time Limit: 1 Sec Memory Limit: 32 MBSubmit: 43 Solved: 10
[ Submit][ Status][ Web Board]
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
The first line of the input contains the number of test cases in the file. And t he first line of each case
contains one integer numbers n
Output
For each test case, output a line with the ans % 1000000000.
Sample Input
1
7
Sample Output
6
题解:这个题当数据量不大的时候,完全可以用搜索得出结果,但数据量大时,会超时。所以,可以先用dfs搜索得出前面若干项的结果,看一下有什么规律。
这个题从1开始,结果一次为 1 2 2 4 4 6 6 10 10 14 14 20 20 26 26 36 36 46 46 60 60 74。
递推公式:p[ i ]=(p[ i-1 ]+p[ i/2 ]) % mod ; (mod=1e9)
import java.util.*;
public class Give_me_the_answer {static long [] a=new long[1020000];
static int n;
public static void f() {
a[1]=1;a[2]=2;
for(int i=2;i<1000010;i+=2) {
a[i]=(a[i-1]+a[i/2])%1000000000;
a[i+1]=a[i];
}
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int t;
t=in.nextInt();
while(t!=0) {
f();
n=in.nextInt();
System.out.println(a[n]);
t--;
}
}
}
本文探讨了如何解决特定类型的整数求和问题,并通过发现规律设计了一个高效的递推算法来计算所有可能的表示方式数量。该算法适用于较大数值的求和问题,能够避免传统搜索方法的时间复杂度过高问题。
2072

被折叠的 条评论
为什么被折叠?



