Все знают, что такое числа Фибоначчи:

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711

Если забыли, то это такая последовательность чисел, где каждое число равно сумме двух предыдущих.

Предположим, у нас есть целое число N, и нам надо вычислить N-е число Фибоначчи и, не вычисляя это число, найти его последнюю цифру.

Начнем с того, что число может быть огромным (числа Фибоначчи растут очень быстро), а если мы будем держать в памяти весь ряд, то никакого профита мы не получим.

Поэтому оптимальным решением является создание функции-генератора. Если вы о них никогда не слышали, очень полезно будет о них почитать. Итак, напишем код, который выведет в консоль N-е число Фибоначчи:

def fib(n):
  x, y = 0, 1
  while n:
    yield x
    x, y = y, x + y
    n -= 1

for i in fib(int(input())+1):
  continue

print(i)

Теперь найдем последнюю цифру N-ого числа Фибоначчи.

Неправильно будет использовать код выше - ведь нас интересует только последняя цифра.

Если 0 ≤ a, b ≤ 9 – последние цифры чисел Fi и Fi+1 соответственно, то (a + b)mod10 – последняя цифра числа Fi+2.

Следовательно, мы пройдемся только по последним цифрам:

def fib(n):
  x, y = 0, 1
  while n:
    yield x
    x, y = y, (x + y) % 10
    n -= 1

for i in fib(int(input())+1):
  continue

print(i)