//快速幂 a^b%p
//倍增法,原理上2^100=2^64*2^32*2^4,所以类似把b用2进制处理,也化成2的幂,
//每次最末位&1,判断是否需要乘以当前a的幂,依次直到b移到最后一位;
//左移运算符(<<):a<<b表示a*(2^b)
#include<iostream>
#define LL long long
using namespace std;
int main(){
int b, p;
LL a, ans;
cin >> a >> b >> p;
ans = 1;
cout << a << " ^ " << b << " % " << p << " = ";
while(b){
if (b & 1) ans = ans * a % p;
a = a * a % p;
b >>= 1;
}
cout << ans % p << endl;
return 0;
}
快速幂的技巧
最新推荐文章于 2024-10-31 19:07:52 发布