(01). 算出來的值很大, 因為答案只要求取得 十位數, 所以可以把每次 相乘 13 後 除以 100 取餘數, 再去乘以 13, 可以減少 記憶體容量 和 計算時間
如 13 的 7 次方
原本需要:
1) 13
2) 169
3) 2197
4) 28561
5) 371293
6) 4826809
7) 627485"1"7
但取兩位餘數 再乘以 13:
1) 13
2) 69
3) 97
4) 61
5) 93
6) 9
7) "1"7
最後結果是一樣, 十位數 是 "1", 但是計算速度和記憶體會大大減少
(02). n 很大可先拆多組後再計算, (拆 2組, 5組, 10組...), 就會更省時間
如 13 的 23 次方, 正確答案: 417539054134131163670457"9"7,
我們可以拆成 3 組分別計算:
13 ** 23 --> (13 ** 7) * (13 ** 7) * (13 ** 7) * (13 ** 2)
依據上面 (01) 結果, 13 的 7 次方, 答案兩位數為 17
那就 17 * 17 * 17 * (13 ** 2)
等於 4913 * 169 --> 8302"9"7
如果再套用 (01) 的觀念, 取兩位數後再 相乘
1) 17
2) 89
3) 13
最後 13 * (13 ** 2) -> 21"9"7
(03). 取兩位數後再相乘的作法:
ans = 1
for x in range(xxx):
ans = ans * 13
ans = ans % 100
(04). 最後答案取 十位數 的作法:
答案除以 100 取餘數, 再 除以 10 取整數 -> print(ans % 100 // 10)