Stepik - 2.2. Последняя цифра большого числа Фибоначчи
Описание задачи
Дано число 1≤n≤10^7, необходимо найти последнюю цифру n-го числа Фибоначчи. Как мы помним, числа Фибоначчи растут очень быстро, поэтому при их вычислении нужно быть аккуратным с переполнением. В данной задаче, впрочем, этой проблемы можно избежать, поскольку нас интересует только последняя цифра числа Фибоначчи: если 0≤a,b≤9 — последние цифры чисел F(i) F и F(i+1) соответственно, то (a+b) mod10 — последняя цифра числа F(i+2).
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int toCalculate = scanner.nextInt();
scanner.close();
System.out.println(calculateFibonacci(toCalculate));
}
private static int calculateFibonacci(int number) {
if (number == 1) return 1;
int[] fibbonaccis = new int[number + 1];
fibbonaccis[0] = 0;
fibbonaccis[1] = 1;
for (int i = 2; i < fibbonaccis.length; i++) {
fibbonaccis[i] = getLastSymbol(fibbonaccis[i - 1] + fibbonaccis[i - 2]);
}
return fibbonaccis[fibbonaccis.length - 1];
}
private static int getLastSymbol(int number) {
return number % 10;
}
}