题目
Description
In how many ways can you tile a 2xn rectangle by 2x1 or 2x2 tiles?
Here is a sample tiling of a 2x17 rectangle.
Input
Input is a sequence of lines, each line containing an integer number 0 <= n <= 250.Output
For each line of input, output one integer number in a separate line giving the number of possible tilings of a 2xn rectangle.Sample Input
2
8
12
100
200Sample Output
3
171
2731
845100400152152934331135470251
1071292029505993517027974728227441735014801995855195223534251
题意
2*n的长方形内铺2*1和2*2的长方形,问有多少种铺法
题解
递推公式f(n)=f(n-1)+2*f(n-2)
BigInteger使用方法
1、初始化BigInteger
BigInteger bigInteger=new BigInteger("1");
2、赋值
bigInteger=BigInteger.valueOf(1);
3、运算
bigInteger=bigInteger.add(BigInteger.valueOf(1)); //加
bigInteger=bigInteger.subtract(BigInteger.valueOf(1)); //减
bigInteger=bigInteger.multiply(BigInteger.valueOf(1)); //乘
bigInteger=bigInteger.divide(BigInteger.valueOf(1)); //除
bigInteger=bigInteger.mod(BigInteger.valueOf(1)); //取余
代码
import java.math.BigInteger;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
BigInteger bigInteger[]=new BigInteger[300];
bigInteger[0]=BigInteger.valueOf(1);
bigInteger[1]=BigInteger.valueOf(1);
bigInteger[2]=BigInteger.valueOf(3);
for(int i=3;i<=250;i++){
bigInteger[i]=bigInteger[i-1].add(BigInteger.valueOf(2).multiply(bigInteger[i-2]));
}
Scanner scanner=new Scanner(System.in);
while(scanner.hasNext()){
int x=scanner.nextInt();
System.out.println(bigInteger[x]);
}
}
}