题目

解释
- O(n∗logb)
代码段
#include<iostream>
#define ll long long
using namespace std;
ll qmi(ll a,ll k,ll p)
{
ll res=1;
while(k)//对b进行二进制化,从低位到高位
{
//如果b的二进制表示的第0位为1,则乘上当前的a
if(k&1)res=res*a%p;
//b右移一位
k>>=1;
//更新a,a依次为a^{2^0},a^{2^1},a^{2^2},....,a^{2^logb}
a=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;
}
}

本文探讨了如何利用二进制法优化计算过程,通过代码展示了快速幂(qmi)函数的实现,它的时间复杂度为O(n*logb),适用于大数乘方运算,适用于计算机科学中高效计算的场景。

&spm=1001.2101.3001.5002&articleId=122926073&d=1&t=3&u=ad68b5ab6fa94342b2782c750566f624)
2029

被折叠的 条评论
为什么被折叠?



