快速幂 取余
转载自:https://www.cnblogs.com/1miharu/p/11333297.html
/* 底数 指数(二进制) sum 初始 3 1101 3^1 3^2 110 3^1 3^4 11 3^1 * 3^4 3^8 1 3^1 * 3^4 * 3^8 --> 3^13 */ #include <bits/stdc++.h> #define LL long long #define reg register using namespace std; LL B, P, K, Ans; int main() { scanf("%lld%lld%lld", &B, &P, &K); printf("%lld^%lld mod %lld=", B, P, K); Ans = 1; for (; P; P >>= 1, B = B * B % K) if (P & 1) Ans = Ans * B % K; printf("%lld\n", Ans % K); return 0; }