PKU 2506-Tiling

問題概要

2xnのマス目を1x2のタイルと2x2のタイルで敷き詰める方法は何通りあるか求めよ.

解法

漸化式はAn=An-1+2An-2になる.
多倍長整数を使うだけ

実装(Java)

import java.util.*;
import java.math.*;
import java.io.*;
import java.util.regex.*;
import static java.lang.Math.*;
import static java.util.Arrays.*;
import static java.lang.System.*;

public class Main {
	Scanner input;

	void run(){
		input=new Scanner(System.in);
		while(input.hasNext()){
			int t=input.nextInt();
			BigInteger now=BigInteger.ONE;
			BigInteger back1=BigInteger.ONE;
			BigInteger back2=BigInteger.ZERO;
			for(int i=0;i<t;i++){
				now=back1.add(back2.add(back2));
				back2=back1;
				back1=now;
			}
			printf("%s\n",now.toString());
		}
	}

	void printf(String format,Object... args){
		System.out.printf(format, args);
	}

	public static void main(String[] args) {
		new Main().run();
	}

}