How many Fibs?(자바 대수)

1776 단어 자바ACM
Link:http://poj.org/problem?id=2413
Problem:
How many Fibs?
Time Limit: 1000MS
 
Memory Limit: 65536K
Total Submissions: 10628
 
Accepted: 3947
Description
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
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<=10
100. The numbers a and b are given with no superfluous leading zeros.
Output
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

Source
Ulm Local 2000
import java.util.*;
import java.io.*;
import java.math.*;
import java.text.*;
public class pes {
public static void main(String[] args)
{
BigInteger x,y,f1,f2,t;
BigInteger ans;
Scanner cin=new Scanner(System.in);
while(cin.hasNext())
{
x=cin.nextBigInteger();
y=cin.nextBigInteger();
if(x.compareTo(BigInteger.valueOf(0))==0&&y.compareTo(BigInteger.ZERO)==0)
break;
ans=BigInteger.ZERO;
f1=BigInteger.ONE;
f2=BigInteger.valueOf(2);
while(f1.compareTo(x)<0)
{
t=f2;
f2=f2.add(f1);
f1=t;
}
while(f1.compareTo(y)<=0)
{
ans=ans.add(BigInteger.ONE);
t=f2;
f2=f2.add(f1);
f1=t;
}
System.out.println(ans);
}
}
}

좋은 웹페이지 즐겨찾기