蓝桥杯_乘法逆元_费马小定理求乘法逆元

蓝桥杯_乘法逆元_费马小定理求乘法逆元

//

乘法逆元 -- 模运算不满足分配律

定义:       a*inv(a) == 1( mod p ) -> a 和 inv(a) 互为乘法逆元
充要条件:   gcd( a,p ) == 1
应用:       ( a/b )%p == a*( inv(b) )%p

费马小定理求乘法逆元

    gcd( a,p ) == 1 -> a^( p-1 ) == 1( mod p ) 

    等价代换         
        -> a*inv(a) == a^( p-1 )%p
        -> inv(a) == a^( p-2 )%p                //

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

const int MOD=1e9+7;

int fastpow( int in,int n )
{
    int ans=1;
    while( n )
    {
        if( n&1 ) ans=ans*in%MOD;
        in=in*in%MOD;
        n>>=1;
    }
    return ans;
}

signed main()
{
    int t,n; cin>>t;

    while( t-- )
    {
        cin>>n; cout<<fastpow( n,MOD-2 )<<endl;
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这题AC再睡.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值