Я писал программу, в которой мне нужно вычислять безумно огромные числа.
k = int(input())
print(int((2**k)*5 % (10**9 + 7))
Здесь k составляет порядка 10 9 .
Как и ожидалось, это было довольно медленно (для расчета потребовалось до 5 секунд), в то время как моей программе необходимо завершить вычисления за 1 секунду.
После небольшого онлайн-исследования я нашел функцию pow () и написал
p = 10**9 + 7
print(int(pow(2, k- 1,p)*10))
Это прекрасно работает для небольших чисел, но портится при больших числах. Я могу понять, почему это происходит (потому что это, по сути, не то, что я хочу вычислить, и операция модуля с таким большим числом не влияет на вычисление с небольшими значениями k).
Я также нашел библиотеки, такие как gmpy2 и numpy, но я не знаю, как их использовать, так как я только начинающий с python.
Итак, как я могу написать выражение для того, что я хочу вычислить и которое работает достаточно быстро и не допускает ошибок при больших числах?