快速幂

快速幂

image-20210722103921308

给定 n 组 ai,bi,p对于每组数据,求出 abiimodpii 的值。

输入格式

第一行包含整数 nn。

接下来 nn 行,每行包含三个整数 ai,bi,piai,bi,pi。

输出格式

对于每组数据,输出一个结果,表示 abiimodpiaibimodpi 的值。

每个结果占一行。

数据范围

1≤n≤1000001≤n≤100000,
1≤ai,bi,pi≤2×1091≤ai,bi,pi≤2×109

输入样例:

2
3 2 5
4 3 9

输出样例:

4
1
#include <iostream>
#include <algorithm>

using namespace std;

typedef long long LL;

// a ^ k % p
int qmi(int a, int k, int p) {
	int res = 1;
	while (k) {
		if (k & 1) {
			res = (LL)res * a % p;
		}
		k >>= 1;
		a = (LL)a * a % p;
	}
	return res;
}


int main() {
	int n;
	cin >> n;
	while (n--) {
		int a, k, p;
		cin >> a >> k >> p;
		cout << qmi(a, k, p);
	}
}
posted @ 2021-07-22 10:41  JK~  阅读(44)  评论(0)    收藏  举报