30 lines
600 B
Python
30 lines
600 B
Python
import math
|
|
import sys
|
|
|
|
def mod_exp(x, y, m):
|
|
k = x % m
|
|
results = {}
|
|
return exp_m(results, k, y, m)
|
|
|
|
def exp_m(results, k, y, m):
|
|
if y in results:
|
|
return results[y]
|
|
else:
|
|
if k == 1:
|
|
ret = 1
|
|
elif y == 0:
|
|
ret = 1
|
|
elif y == 1:
|
|
ret = k
|
|
else:
|
|
h = y // 2
|
|
ret = (exp_m(results, k, h, m) % m * exp_m(results, k, y - h, m) % m) % m
|
|
results[y] = ret
|
|
return ret
|
|
|
|
line = sys.stdin.readline().split()
|
|
x = int(line[0])
|
|
y = int(line[1])
|
|
m = int(line[2])
|
|
|
|
print(mod_exp(x, y, m))
|