Я пытаюсь решить Фибоначчи с помощью Java, но мой код занимает много времени с большими числами.
Описание проблемы Задача.Дано целое число ?, найдите последнюю цифру ?th
числа Фибоначчи ??
(то есть ?? mod 10).
Формат ввода.Входные данные состоят из единственного целого числа ?.
Ограничения.0 ≤ ? ≤ 10⁷.
Формат вывода.Выведите последнюю цифру ??
.
Мой код:
public class FibonacciLastDigit {
private static int getFibonacciLastDigitNaive(int n) {
if (n <= 1) {
return n;
}
BigInteger first = BigInteger.ZERO;
BigInteger second = BigInteger.ONE;
BigInteger temp;
for (int i = 1; i < n; i++) {
temp = first.add(second);
first = second;
second = temp;
}
return second.mod(BigInteger.TEN).intValue();
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
System.out.println(getFibonacciLastDigitNaive(n));
}}
Мой код завершится ошибкой, если input = 613455, чтобы получить значение и максимально допустимое значение, потребуется 30 секунд.время составляет 1,5 секунды.
Мне пришлось использовать большое целое число, потому что долго не достаточно.