https://www.51nod.com/Challenge/Problem.html#problemId=1046
题目大意:a,b,c都是1e9以内的数,求a的b次方%c
思路:幂运算最快的方法就是逐步完全平法,比如3的5次方就是先算3的平方,再算3的平方的平方,再单独乘一个3
#include<bits/stdc++.h>
using namespace std;
long long pow(long long a, long long b, long long c)
{
long long ans = 1;
while (b > 0)
{
if (b & 1)
{//如果指数是奇数,结果需要单独乘一次a
ans = ans * a % c;
}
a = a * a % c;//求a的完全平方
b >>= 1;//指数除以2
}
return ans;
}
int main()
{
long long a, b, c;
cin >> a >> b >> c;
cout << pow(a, b, c);
return 0;
}