描述
一个斐波那契序列,F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2) (n>=2),根据n的值,计算斐波那契数F(n),其中0≤n≤1000。
输入
输入数据的第一行为测试用例的个数t,接下来为t行,每行为一个整数n(0≤n≤1000)。
输出
输出每个测试用例的斐波那契数F(n)。
样例输入
2
1
2
样例输出
1
1
import java.math.BigInteger; import java.util.ArrayList; import java.util.Scanner; public class Main {public static void main(String[] args) { ArrayList<BigInteger> ar=new ArrayList<BigInteger>();BigInteger b1=new BigInteger("1");ar.add(b1);BigInteger b2=new BigInteger("1");ar.add(b2);Scanner sc=new Scanner(System.in);for(int i=2;i<1010;i++){BigInteger a=ar.get(i-1);BigInteger b=ar.get(i-2);BigInteger c=a.add(b);ar.add(c);}int t=0;int n=sc.nextInt();while(true){if(t==n)break;int m=sc.nextInt();if(m==0)System.out.println(0);else System.out.println(ar.get(m-1));t++;} } }
像这种数据非常大的,用C或C++解决真是非常麻烦,不过用Java就比较简单了,BigInteger可以存无限大的数,比较好处理,第一次交上去竟然RE了,不明白,测试了好几次,突然想到如果输入0时数组的下标就变成-1了,于是,输入0加入判断,就过了