POJ2506 JAVA大数

来源:互联网 发布:奶瓶蹭网软件 编辑:程序博客网 时间:2024/05/19 23:17

题目

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

题意
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]);        }    }}
0 0
原创粉丝点击