通过位运算减少循环次数
#include <iostream>
#include <cstdio>
#include <string>
#include <math.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define maxSize 3000
long long fun(long long a,long long b,long long c)
{
if(b==0) return 1%c;
int temp=fun(a,b>>1,c);
temp=temp*temp%c;
if(b&1) temp=(long long)temp*a%c;
return temp;
}
int main()
{
long long a,b,c;
cin>>a>>b>>c;
cout<<fun(a,b,c)<<endl;
return 0;
}