快速幂(模板题)

快速幂(模板题),第1张

快速幂(模板题) 快速幂 题目

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

输入格式

第一行包含整数 n。

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

输出格式

对于每组数据,输出一个结果,表示 ai^bi mod pi 的值。

每个结果占一行。

数据范围

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

输入样例:
2
3 2 5
4 3 9
输出样例:
4
1
思路

AC代码
#include
#include
#include
#include

using namespace std;

typedef long long LL;

//a^k mod p
int qmi(int a,int k,int p)
{
	int res=1%p;//这里要%p,因为当p=1,k=0时,res=1%p的结果是0,而如果写成res=1的话结果就变成了1
	while(k)//本质上是求k的二进制表示 
	{
		if(k&1)//k&1表示k的个位是1 
		{
			res=(LL)res*a%p;//这里模p是为了防止溢出 
		}
		k>>=1;//删除k的末尾 
		a=(LL)a*a%p;//把a变成下一个
	}
	return res;//返回res 
}
int main()
{
	int n;
	scanf("%d",&n);
	
	while(n--)
	{
		int a,k,p;
		scanf("%d%d%d",&a,&k,&p);
		
		printf("%dn",qmi(a,k,p));
	}
	
	return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5611239.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存