当前位置:网站首页>数学知识:快速幂—快速幂

数学知识:快速幂—快速幂

2022-06-23 07:01:00 奋斗吧!骚年!

题目:AcWing 875. 快速幂
给定 n 组 ai,bi,pi,对于每组数据,求出 aibimod pi 的值。

输入格式
第一行包含整数 n。

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

输出格式
对于每组数据,输出一个结果,表示 aibimod pi 的值。

每个结果占一行。

数据范围
1≤n≤100000,
1≤ai,bi,pi≤2×109

输入样例:

2
3 2 5
4 3 9

输出样例:

4
1

题目分析:
求 aibimod pi
先预处理出:
a的20次方 mod p
a的21次方 mod p

a的2logk次方 mod p
然后将bi次方转化为x20+x21+…x2logk
这是运用二进制的性质

#include <iostream>

using namespace std;

const int N = 100010;
typedef long long LL;

LL qmi(int a,int k,int p)
{
    
    LL res=1%p;
    while(k)
    {
    
        if(k&1)res=(LL)res*a%p;
        a=(LL)a*a%p;
        k>>=1;
    }
    return res;
}
int main()
{
    
    int n;
    scanf("%d",&n);
    
    while(n--)
    {
    
        int a,k,p;
        scanf("%d%d%d",&a,&k,&p);
        cout<<qmi(a,k,p)<<endl;
    }
    return 0;
}
原网站

版权声明
本文为[奋斗吧!骚年!]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_46470984/article/details/125418500