题目:yy经常遇见一个奇怪的事情,每当他看时间的时候总会看见11:11,这个很纠结啊。
现在给你m个1,你可以把2个1组合成一个2,这样就不是光棍了,问这样的组合有多少种??
例如(111 可以拆分为 111 12 21 有三种)m最大为200
思路:实际上就是斐波那契数列。long long(__int64)会溢出,所以用java做
代码:
01.
import java.math.BigInteger;
02.
import java.util.Scanner;
03.
04.
public
class
Main {
05.
06.
public
static
void
main(String[] args) {
07.
BigInteger[] num =
new
BigInteger[500];
08.
num[1] = BigInteger.valueOf(1);
09.
num[2] = BigInteger.valueOf(2);
10.
for
(
int
i = 3; i < 500; i++) {
11.
num[i] = num[i - 1].add(num[i - 2]);
12.
}
13.
String str;
14.
Scanner cin =
new
Scanner(System.in);
15.
while
(cin.hasNextInt()) {
16.
int
t = cin.nextInt();
17.
for
(
int
i = 0; i < t; i++) {
18.
str = cin.next();
19.
int
n = str.length();
20.
System.out.println(num[n]);
21.
}
22.
}
23.
}
24.
}