Re: 10183 - How many Fibs?
Posted: Wed Jul 04, 2012 9:52 am
Thanks for your case.
I've updated my solution but sill get WA
I've updated my solution but sill get WA
Code: Select all
import java.io.*;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
List<BigDecimal> fibonacciNumber = new ArrayList<BigDecimal>();
fibonacciNumber.add(BigDecimal.ONE);
fibonacciNumber.add(BigDecimal.valueOf(2));
Scanner scanner = new Scanner(reader);
BigDecimal maxValue = BigDecimal.valueOf(10).pow(100);
int index = 2;
BigDecimal newFib = BigDecimal.ZERO;
while (newFib.compareTo(maxValue) <= 0) {
newFib = fibonacciNumber.get(index - 1).add(fibonacciNumber.get(index - 2));
fibonacciNumber.add(newFib);
index++;
}
try {
BigDecimal first;
BigDecimal second;
while (true) {
first = new BigDecimal(scanner.next());
second = new BigDecimal(scanner.next());
if (first.equals(BigDecimal.ZERO) && second.equals(BigDecimal.ZERO)) {
break;
}
if (first.equals(BigDecimal.ZERO)) {
first = BigDecimal.ONE;
}
int start = 0;
int end = 0;
for (int i = 0; i < fibonacciNumber.size(); i++) {
BigDecimal bigDecimal = fibonacciNumber.get(i);
if (first.compareTo(bigDecimal) <= 0) {
start = i;
break;
}
}
for (int i = start; i < fibonacciNumber.size(); i++) {
BigDecimal bigDecimal = fibonacciNumber.get(i);
if (second.compareTo(bigDecimal) <= 0) {
end = i;
break;
}
}
int result = end - start;
if (fibonacciNumber.get(start).equals(first) && fibonacciNumber.get(end).equals(second)) {
result++;
}
writer.write(Integer.valueOf(result).toString());
writer.write("\n");
}
writer.flush();
} catch (IOException e) {
}
}
}