什么是快速幂呢?就是更快速的计算幂运算。
快速幂的作用就是跟题目中描述的一样
先预处理出这些值
比如
求k的个位
k&1
删除k的个位
k>>=1
#include <iostream> #include <algorithm> using namespace std; typedef long long LL; LL qmi(int a, int b, int p) { LL res = 1; while (b) { if (b & 1) res = res * a % p;//b的个位如果是1 a = a * (LL)a % p; b >>=1;//也可以写成b/=2 } return res; } int main() { int n; scanf("%d", &n); while (n -- ) { int a, b, p; scanf("%d%d%d", &a, &b, &p); printf("%lld\n", qmi(a, b, p)); } return 0; }
在实际问题中的应用
结果题目要求对1e9+7取模
Code over!