Последовательность последних цифр чисел Фибоначчи повторяется с циклом 60. Следовательно, вы можете оптимизировать вычисление суммы n слагаемых до F((n+2) % 60) - 1
. Кроме того, чтобы оставаться в целочисленном диапазоне, вы можете оставить только последнюю цифру каждого термина:
def last_digit(n):
a, b = 0, 1
for i in range((n + 2) % 60):
a, b = b, (a + b) % 10
return 9 if a == 0 else a - 1
print([last_digit(n) for n in range(1, 11)])
Выход:
[1, 2, 4, 7, 2, 0, 3, 4, 8, 3]