题目描述:
给你两个正整数a(0 < a < 100000)和n(0 <= n <=100000000000),计算(a^n) % 20132013并输出结果
示例:
输入:
a = 3453 n = 0
输出:
1
思路一:快速幂。
- 若 b b b是奇数,则 a b = a ∗ a b − 1 a^b =a*a^{b-1} ab=a∗ab−1
- 若 b b b是偶数,则 a b = a b / 2 ∗ a b / 2 a^b=a^{b/2}*a^{b/2} ab=ab/2∗ab/2
# 快速幂迭代写法
ans = 1
if n == 0:
print(1)
else:
while n > 0:
if n & 1: # n为奇数时
ans = ans * a % 20132013
a = a * a % 20132013
n >>= 1
print(ans)
思路二:使用内置的函数pow()。
print(pow(a, n, 20132013))