您的位置:首页 > 编程语言 > Java开发

How many Fibs?(JAVA)大数

2014-02-01 10:11 519 查看

Problem B: How many Fibs?

Recall the definition of the Fibonacci numbers:
f1 := 1 
f2 := 2 
fn := fn-1 + fn-2     (n>=3)
Given two numbers a and b,
calculate how many Fibonacci numbers are in the range [a,b].
Input Specification
The input contains several test cases. Each test case consists of two non-negative integer numbers a and b. Input is terminated by a=b=0. Otherwise, a<=b<=10100. The numbers a and b are
given with no superfluous leading zeros.
Output Specification
For each test case output on a single line the number of Fibonacci numbers fi with a<=fi<=b.
Sample Input

10 100
1234567890 9876543210
0 0

Sample Output

5
4


题目看完,显然是高精度,C肯定可以做,不过这里给出JAVA代码。

import java.math.*;  

import java.util.*;  

import java.io.*;   

public class Main{  

    public static void main(String[] args) {  

        Scanner cin = new Scanner(System.in); 

        BigInteger [] s=new BigInteger [50010];

        BigInteger n,m;

        BigInteger k=new BigInteger("0");

        s[2]=new BigInteger ("2");

        s[1]=new BigInteger ("1");

        for(int i=3;i<=50000;i++)

        {

        s[i]=s[i-1].add(s[i-2]);

        }

        while(cin.hasNextBigInteger()){  

        int sum=0;

        n=cin.nextBigInteger();

        m=cin.nextBigInteger();

        if(n.compareTo(k)==0&&m.compareTo(k)==0)

        break;

        for(int i=1;i<=50000;i++)

        {

        if((s[i].compareTo(n)>=0)&&(s[i].compareTo(m)<=0))

        sum++;

        }

        System.out.println(sum);  

        }  

    }  
}

唯一需要注意的是数组大小,开到10W会超时,1W会WA,大概估算开到5W就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: