abmodc=(amodc)bmodc
a
b
m
o
d
c
=
(
a
m
o
d
c
)
b
m
o
d
c
abmodc=(((a2)b/2)modc
a
b
m
o
d
c
=
(
(
(
a
2
)
b
/
2
)
m
o
d
c
b为偶数
abmodc=(((a2)b/2∗a)modc
a
b
m
o
d
c
=
(
(
(
a
2
)
b
/
2
∗
a
)
m
o
d
c
b为奇数
代码
/*
快速幂取模算法
*/#include <iostream>usingnamespacestd;
int PowerMod(int a, int b, int c){
int ans = 1;
a = a % c;
while(b > 0){
if(b % 2 == 1)
ans = (ans * a) % c;
b = b / 2;
a = (a * a) % c;
}
return ans;
}
int main(){
int a, b, c;
cin >> a >> b >> c;
cout << PowerMod(a, b, c) << endl;
}
算法–快速幂全称:快速幂取模用途:快速求一个幂式的模,在程序设计过程中,经常要去求一些大数对于某个数的余数,为了得到更快、计算范围更大的算法,产生了快速幂取模算法。Mod操作转换公式abmodc=(amodc)bmodcabmodc=(amodc)bmodca^b mod c = (a mod c)^b mod cabmodc=(((a2)b/2)modcabmodc=(...