给定a,b,p
求出a的b次幂mod上p的值,快速幂可以用o(logn)的时间复杂度解决问题,下面给出模板:
#include <iostream>
using namespace std;
int a, b, p;
int power(int a, int b, int p)
{
int res = 1 % p;
for (; b; b >>= 1)
{
if (b & 1) res = (long long)res * a % p;
a = (long long)a * a % p;
}
return res;
}
int main()
{
cin >> a >> b >> p;
cout << power(a%p, b, p) << endl;
return 0;
}