AcWing 876. 快速幂求逆元

Posted MangataTS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AcWing 876. 快速幂求逆元相关的知识,希望对你有一定的参考价值。

题目链接

https://www.acwing.com/problem/content/878/

思路

通过费马小定理可以计算当a和p互质的情况,由于题目说明了p一定是质数,那么我们只用关系a是否是p的倍数即可,如果是p的倍数,那么我们就不能求得逆元,否则我们可以通过快速幂求得逆元

代码

#include<bits/stdc++.h>
using namespace std;

#define ll long long

ll ksm(ll a,ll b,ll p)
    ll res = 1LL;
    for(;b;b>>=1,a = a*a % p) if(b&1) res = res * a % p;
    return res;


int main()

    int n;
    scanf("%d",&n);
    for(int i = 1;i <= n; ++i) 
        ll a,p;
        scanf("%lld%lld",&a, &p);
        if(a % p) printf("%lld\\n",ksm(a,p-2,p));//如果a是p的倍数的话那么就不满足费马小定理了
        else printf("impossible\\n");
    
    return 0;

以上是关于AcWing 876. 快速幂求逆元的主要内容,如果未能解决你的问题,请参考以下文章

[数论+模板] 快速幂及快速幂求逆元算法模板(模板)

ACM入门之快速幂

求逆元

乘法逆元(模板)

逆元总结

快速幂运算+快速幂求乘法逆元