【模板】快速幂

在我们编写C++程序时,求幂运算常常会消耗我们比较大的时间。用我们普通的求幂运算方法(n个x重复相乘),时间复杂度会达到O(n)。对我们的程序编写十分不利。那么,我们就有了一种新算法——快速幂。

快速幂使用了倍增的思想,减少循环次数时间复杂度可以达到O(log n)。对程序的编写十分有利。

下面附上快速幂模板:

#include<iostream>
#define ll long long
#define MOD 1000000007 //根据题目要求更改MOD的值 
using namespace std; 
ll kuaisumi(ll a,ll b)//a的b次幂 
{
    ll ans=1,c=a;
    while(b)
    {
        if(b&1){ans*=c,ans%=MOD;}
        c*=c;
        c%=MOD;
        b>>=1;
    }
    return ans%MOD;
}
int main(){
    ll a,b;
    cin>>a>>b;
    cout<<kuaisumi(a,b); //调用函数 
    return 0;
}

结束啦qwq

posted @ 2022-07-14 17:44  chengjiayi1018  阅读(179)  评论(0)    收藏  举报