题目描述
题目分析
纯粹的快速幂算法模板题,每次运算后取模即可。
一开始以为由于a,b,p均在int范围内,后面想到b*b的结果可能达到2的60次方,故采用longlong存储数据。
我的代码
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
typedef long long ll;
ll quick_pow(ll base, ll pow, ll p) {
ll res = 1;
while (pow) {
if (pow & 1) {
res = res * base % p;
}
base = base * base % p;
pow >>= 1;
}
res = res % p;
return res;
}
int main() {
ll a;
ll b;
ll p;
cin >> a >> b >> p;
cout << a<<"^"<<b<<" mod "<<p<<"="<<quick_pow(a, b, p);
return 0;
}