Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """
- Задача на программирование: последняя цифра большого числа Фибоначчи.
- Дано число 1≤n≤10e7, необходимо найти последнюю цифру n-го числа Фибоначчи.
- Как мы помним, числа Фибоначчи растут очень быстро, поэтому при их вычислении нужно быть аккуратным с переполнением. В данной задаче, впрочем, этой проблемы можно избежать, поскольку нас интересует только последняя цифра числа Фибоначчи: если 0≤a,b≤9 — последние цифры чисел Fi и Fi+1 соответственно, то (a+b)mod10 — последняя цифра числа Fi+2.
- """
- def fib_digit(n):
- prev, cur = 0, 1
- for _ in range(n - 1):
- prev, cur = cur % 10, (prev + cur) % 10
- return cur
- def main():
- n = int(input())
- print(fib_digit(n))
- if __name__ == "__main__":
- main()
- """
- Задача на программирование повышенной сложности: огромное число Фибоначчи по модулю.
- Даны целые числа 1≤n≤10e18 и 2≤m≤10e5, необходимо найти остаток от деления n-го числа Фибоначчи на m.
- """
- n, m = map(int, input().split())
- period = [0, 1]
- i = 2
- while i < m * 6:
- period.append((period[i - 1] + period[i - 2]) % m)
- if period[i] == 1 and period[i - 1] == 0:
- break
- i += 1
- print(period[n % (len(period) - 2)])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement