数学—快速幂
时间:2021-05-04 13:59:59
收藏:0
阅读:14
快速幂
原理:
- 有点倍增的思想。
- 将幂k转化为二进制数,再用位运算&1一位一位去对,来检查k上的某一位是否为1.
快速幂
模块化
#include<iostream>
#include<stdio.h>
using namespace std;
#define ll long long
int qmi(int a,int k,int p)
{
ll res=1;
while(k)
{
if(k&1)res=(ll)res*a%p;
k=k>>1;
a=(ll)a*a%p;
}
return res;
}
int main()
{
int n;
cin>>n;
while(n--)
{
ll a,k,p;
cin>>a>>k>>p;
cout<<qmi(a,k,p)<<endl;
}
return 0;
}
原晨旭
#include<iostream>
#include<stdio.h>
using namespace std;
#define ll long long
int main()
{
int n;
cin>>n;
while(n--)
{
ll a,k,p;
cin>>a>>k>>p;
ll res=1;
//将幂转化为二进制,对每一位都进行判定
while(k>0)
{
if(k&1)res=(ll)res*a%p;
k=k>>1;
a=(ll)a*a%p;
}
cout<<res<<endl;
}
return 0;
}
原文:https://www.cnblogs.com/BeautifulWater/p/14729169.html
评论(0)