Advertisement
Guest User

Untitled

a guest
Apr 17th, 2019
1,756
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.69 KB | None | 0 0
  1. """
  2. Задача на программирование: последняя цифра большого числа Фибоначчи.
  3.  
  4.  
  5. Дано число 1≤n≤10e7, необходимо найти последнюю цифру n-го числа Фибоначчи.
  6.  
  7. Как мы помним, числа Фибоначчи растут очень быстро, поэтому при их вычислении нужно быть аккуратным с переполнением. В данной задаче, впрочем, этой проблемы можно избежать, поскольку нас интересует только последняя цифра числа Фибоначчи: если 0≤a,b≤9 — последние цифры чисел Fi и Fi+1 соответственно, то (a+b)mod10 — последняя цифра числа Fi+2.
  8. """
  9.  
  10. def fib_digit(n):
  11.     prev, cur = 0, 1
  12.     for _ in range(n - 1):
  13.         prev, cur = cur % 10, (prev + cur) % 10
  14.     return cur
  15.  
  16.  
  17. def main():
  18.     n = int(input())
  19.     print(fib_digit(n))
  20.  
  21.  
  22. if __name__ == "__main__":
  23.     main()
  24.  
  25.  
  26. """
  27. Задача на программирование повышенной сложности: огромное число Фибоначчи по модулю.
  28.  
  29.  
  30. Даны целые числа 1≤n≤10e18 и 2≤m≤10e5, необходимо найти остаток от деления n-го числа Фибоначчи на m.
  31. """
  32. n, m = map(int, input().split())
  33. period = [0, 1]
  34. i = 2
  35. while i < m * 6:
  36.     period.append((period[i - 1] + period[i - 2]) % m)
  37.     if period[i] == 1 and period[i - 1] == 0:
  38.         break
  39.     i += 1
  40. print(period[n % (len(period) - 2)])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement