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

//
乘法逆元 -- 模运算不满足分配律
定义: 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;
}