Описание задачи

Дано число 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;
    }
}