#include<iostream>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#include<cstdio>
using namespace std;
int ksm(int a,int b,int p)
{
int re=1;
int t=a;
while(b)
{
if(b&1) re=re*t%p;
t=t*t%p;
b=b>>1;
}
return re;
}
int main()
{
int a,b,p;
scanf("%d%d%d",&a,&b,&p);
cout<<ksm(a,b,p);
return 0;
}
将次数二进制分解,re不断乘上去,t=t*t ,平方式增长。
b=10101111 从低位到高位 b=b>>1 最小一位被吃掉
while(b)直到b被吃没