题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1865
1sting
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4795 Accepted Submission(s): 1800
Problem Description
You will be given a string which only contains ‘1’; You can merge two adjacent ‘1’ to be ‘2’, or leave the ‘1’ there. Surly, you may get many different results. For example, given 1111 , you can get 1111, 121, 112,211,22. Now, your work is to find the total number of result you can get.
Input
The first line is a number n refers to the number of test cases. Then n lines follows, each line has a string made up of ‘1’ . The maximum length of the sequence is 200.
Output
The output contain n lines, each line output the number of result you can get .
Sample Input
3 1 11 11111
Sample Output
1 2 8
Author
z.jt
Source
Recommend
lcy
思路:很明显的斐波那契数列。数据太大,用java实现。
附上AC代码:
import java.util.Scanner;
import java.math.BigInteger;
public class Main {
final static int MAXN = 205;
public static void main(String[] args) {
// TODO Auto-generated method stub
BigInteger fib[] = new BigInteger[MAXN];
fib[0] = fib[1] = BigInteger.ONE;
for (int i=2; i<fib.length; ++i)
fib[i] = fib[i-1].add(fib[i-2]);
Scanner in = new Scanner(System.in);
int T = in.nextInt();
while (T-- > 0){
String str = in.next();
System.out.println(fib[str.length()]);
}
in.close();
}
}