算法基础之快速幂

2023-12-21 23:18:45

快速幂

  • 核心思想:logk的复杂度求出ak mod p

    • 将k拆成若干个2的n之和 (二进制)

    • 在这里插入图片描述

    •   #include<iostream>
        #include<algorithm>
        
        using namespace std;
        typedef long long LL;
        
        LL qmi(int a,int k,int p)
        {
            LL res = 1 % p;
            while(k)  //k转为二进制 还有正数 就进行
            {
                if(k & 1) res = res * a % p;  //k个位为1 需要乘上
                k >>= 1;
                a = (LL)a *a %p;  //强转成LL 否则会爆
            }
            
            return res;
        }
        
        int main()
        {
            int n;
            cin>>n;
            
            while(n--)
            {
                int a,k,p;
                cin>>a>>k>>p;
                cout<<qmi(a,k,p)<<endl;
            }
        }
      

文章来源:https://blog.csdn.net/Pisasama/article/details/135141071
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。