Вы можете сначала создать список power
, используя встроенную функцию pow или оператор **
.См. Ниже для обеих реализаций:
In [1777]: n = 43787
...: e = 31
In [1778]: a
Out[1778]: ['1112', '2222', '3323', '4']
In [1781]: power = [pow(int(i),e) for i in a]
ИЛИ
In [1786]: power = [int(i) ** e for i in a]
Затем создайте еще один список modulo
для каждого элемента выше созданного списка мощности:
In [1784]: modulo = [i%n for i in power]
In [1785]: modulo
Out[1785]: [19378L, 27732L, 26928L, 30208]
Создана еще одна функция для расчета power
.Попробуйте и проверьте, увеличивается ли производительность при этом:
MOD = 1000000007
def fast_power(base, power):
result = 1
while power > 0:
# If power is odd
if power % 2 == 1:
result = (result * base) % MOD
# Divide the power by 2
power = power / 2
# Multiply base to itself
base = (base * base) % MOD