AcWing.875.快速幂

给定 n n n 组 ai,bi,pi,对于每组数据,求出 aibi mod pi 的值。

输入格式
第一行包含整数 n n n

接下来 n n n 行,每行包含三个整数 ai,bi,pi

输出格式
对于每组数据,输出一个结果,表示 aibi mod pi 的值。每个结果占一行。

数据范围
1 ≤ n ≤ 100000 , 1 ≤ a i , b i , p i ≤ 2 × 109 1≤n≤100000,1≤ai,bi,pi≤2×109 1n100000,1ai,bi,pi2×109

输入样例:

2
3 2 5
4 3 9

输出样例:

4
1

代码:

#include
using namespace std;
#define ll long long

int qmi(int a, int k, int p) {	//求a的k次方mod p
	int res = 1;
	while (k) {
		if (k & 1)res = (ll)res * a % p;	//如果k的个位是1,乘上a的2的0次方
		k >>= 1;	//消去末尾
		a = (ll)a * a % p;	//a的2次方进行平方一下
	}
	return res;
}

int main() {
	int n; cin >> n;
	while (n--) {
		int a, k, p;
		cin >> a >> k >> p;
		cout << qmi(a, k, p) << endl;
	}
	return 0;
}

你可能感兴趣的:(算法,c++,数据结构)