首页 > 代码库 > poj 2506 Tiling

poj 2506 Tiling

Tiling
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 7454 Accepted: 3640

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
200

Sample Output

3
171
2731
845100400152152934331135470251
1071292029505993517027974728227441735014801995855195223534251


import java.math.BigInteger;
import java.util.Scanner;

public class Main {
	
	public static void main(String[] args) {
		Scanner cin=new Scanner(System.in);
		BigInteger []a=new BigInteger[10000];
		a[0]=BigInteger.ONE;
		a[1]=BigInteger.ONE;
		for(int i=2;i<=300;i++)
		{
			a[i]=a[i-1].add(a[i-2].multiply(BigInteger.valueOf(2)));    //a[i]=a[i-1]+2*a[i-2]
		}
		int n;
		while(cin.hasNext())
		{
			 n=cin.nextInt();
			 System.out.println(a[n]);
			
		}
	}
}