f(n)表示n个1可以构成的方案数。则加一个1的时候,前面n种仍然成立 f(n+1)=f(n)+*;
Total Submission(s): 713 Accepted Submission(s): 285
第n+1个1和第n个1相加构成2,前面n-1个1可以组合的个数。 f(n+1)=f(n)+f(n-1);
没说要取模,所以肯定要用到大数了。
代码:
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
BigInteger f[] = new BigInteger[205];
f[1] = new BigInteger("1");
f[2] = new BigInteger("2");
for(int i = 3; i < 205; i++)
f[i] = f[i-1].add(f[i-2]);
while(sc.hasNext())
{
int n = sc.nextInt();
System.out.println(f[n]);
}
}
}
Problem B
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 713 Accepted Submission(s): 285
Problem Description
度熊面前有一个全是由1构成的字符串,被称为全1序列。你可以合并任意相邻的两个1,从而形成一个新的序列。对于给定的一个全1序列,请计算根据以上方法,可以构成多少种不同的序列。
Input
这里包括多组测试数据,每组测试数据包含一个正整数
N
,代表全1序列的长度。
1≤N≤200
1≤N≤200
Output
对于每组测试数据,输出一个整数,代表由题目中所给定的全1序列所能形成的新序列的数量。
Sample Input
1 3 5
Sample Output
1 3 8Hint如果序列是:(111)。可以构造出如下三个新序列:(111), (21), (12)。
Source
Recommend
liuyiding