a^b%p和 a*b%p问题(快速幂运算)
a^b%p问题
求 a 的 b 次方对 p 取模的值。
输入格式
三个整数 a,b,p ,在同一行用空格隔开。
输出格式
输出一个整数,表示a^b mod p的值。
数据范围
1≤a,b,p≤10^9
输入样例:
3 2 7
输出样例:
2
首先,我们最直接的想法是直接用循环求出a的b次幂,之后对p取模,但是我们认真思考一下会发现,这种算法一是复杂度较高,二是会导致数据溢出,所以这种方法不可取,我们会想到位运算
2 10 = 2 2 ∗ 2 8 = 2 2 1 ∗ 2 2 3 2^{10} = 2^{2}*2^{8} = 2^{2^1}*2^{2^3} 210=22∗