有关取模公式
(a * b)% c = (a%c) * (b%c) % c a^b % c = (a % c)^b % c
#include<cstdio>
#include<iostream>
using namespace std;
typedef long long ll ;
ll qmod(ll a,ll n,ll k)
{
ll ans = 1;
while(n)
{
if(n&1) ans =( ans * a ) % k;
a = a * a % k;
n = n >> 1;
}
return ans;
}
int main()
{
ll x,y,z;
cin >> x >> y >> z;
cout << qmod(x,y,z);
return 0;
}
不会爆的模板
LL qpow(LL x,LL y,LL m)//二分思想
{
x=x%m;//防止第一个x*x就爆掉longlong
LL ans=1;//记录答案
while(y)// 注意如果y=0的话不会进入循环
{
if(y&1)//判断y是否是单数
{
ans=ans*x;
ans=ans%m;
}
x=x*x;
x=x%m;
y=y>>1;
}
ans=ans%m;//防止出现特殊数据:1^0%1=0的情况
return ans;
}