原题链接:https://www.luogu.com.cn/problem/P1226
算法标签:数论、分治、递归
代码:
#include<iostream>
#include<cstdio>
using namespace std;
typedef long long ll;
ll mod;
ll quick_pow(ll a, ll b){
if(b == 1){
return a;
}
ll tmp = quick_pow(a, b/2);
if(b % 2 == 0){
return (tmp*tmp)%mod;
}else{
return (((a*tmp)%mod)*tmp)%mod;
}
}
int main(){
ll a,b;
cin >> a >> b >> mod;
printf("%lld^%lld mod %lld=%lld", a, b, mod, quick_pow(a%mod, b));
return 0;
}
编写代码过程中,注意取余!