(a, b, m)
| 1 | # 繰り返し二乗法(p は a**1, a**2, a**4, a**8, ... といった値をとる) |
| 2 | def modpow(a, b, m): |
| 3 | p = a |
| 4 | answer = 1 |
| 5 | for i in range(30): |
| 6 | if (b & (1 << i)) != 0: |
| 7 | answer = (answer * p) % m |
| 8 | p = (p * p) % m |
| 9 | return answer |
| 10 | |
| 11 | # division(a, b, m) は a÷b mod m を返す関数 |
| 12 | def division(a, b, m): |