题意 :A^B%C(快速幂)
注意:直接由快速幂会溢出,要做优化不让溢出
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
typedef unsigned __int64 LL;
LL solve (LL s,LL t,LL m)//防溢出
{
LL ans = 0;
while(t)
{
if(t&1)
{
ans += s;
if(ans >=m)ans -= m;
}
s += s;
if(s >= m)s -= m;
t /= 2;
}
return ans%m;
}
LL fun(LL a,LL n,LL m)
{
if(n == 1) return a % m;
if(n == 0)return 1;
LL temp = fun(a,n/2,m);
temp = solve(temp,temp,m);
if(n % 2 == 1)
{
temp = solve (temp,a,m);
}
return temp%m;
}
int main()
{
LL n,m,a;
while(~scanf("%I64u%I64u%I64u",&a,&n,&m))
{
printf("%I64u\n",fun(a,n,m));
}
}