原题链接:
洛谷 P1226https://www.luogu.com.cn/problem/P1226
输入样例·1
2 10 9
输出样例·2
2^10 mod 9=7
解题思路:
大概意思就是巧用二进制和指数乘法的运算,实现快速求幂的目的。
代码
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;
long long a, b, k;
long long qmi(int a, int b, int k) {
long long res = 1;
while (b) {
if (b & 1)res = res * (long long)a % k;
b >>= 1;
a = a * (long long)a % k;
}
res %= k;
return res;
}
int main() {
scanf("%lld %lld %lld", &a, &b, &k);
long long res = 0;
res = qmi(a, b, k);
printf("%lld^%lld mod %lld=%lld", a, b, k, res);
return 0;
}