一、内容
题意: ab % c 1<= a, b, c<=2 63
二、思路
- 利用高精度的快乘
三、代码
#include <cstdio>
typedef long long ll;
typedef unsigned long long ull;
ll a, b, c;
ll mul(ll a,ll b, ll MOD){
ll ans = 0;
while (b) {
if (b & 1) {
ans = (ans + a) % MOD;
}
b >>= 1;
a = (a << 1) % MOD;
}
return ans;
}
ll ksc(ll x, ll y, ll MOD) {
ll z = (long double)x /MOD * y;
ll ans = (ull)x * y - (ull)z * MOD;
return (ans + MOD) % MOD;
}
ll quickPow(ll a, ll b, ll MOD) {
ll ans = 1;
while (b) {
if (b & 1) {
ans = ksc(ans, a, MOD);
}
a = ksc(a, a, MOD);
b /= 2;
}
return ans;
}
int main() {
while (scanf("%lld%lld%lld", &a, &b, &c) != EOF) {
printf("%lld\n", quickPow(a % c, b, c));
}
return 0;
}