单个数O(logmod)求逆元
$View$ $Code$
const int mod=998244353;
inline long long qpow(long long a,long long b)
{
long long ans=1;
while(b)
{
if(b&1)
ans=ans*a%mod;
a=a*a%mod;
b/=2;
}
return ans%mod;
}
long long calcinv(long long x)
{
return qpow(x,mod-2);
}
O(n)求1~n的逆元(线性逆元)
$View$ $Code$
```cpp
#include
using namespace std;
inline int read()
{
int ret=0,f=1;
char ch=getchar();
while('9'
O(n)求1~n的阶乘的逆元(阶乘逆元)
$View$ $Code$
const int mod=998244353;
int maxn;
long long ans,fac[100005],inv[100005];
inline void pre()
{
fac[1]=1;
inv[0]=1;
for(register int i=2;i<=maxn;i++)
{
fac[i]=fac[i-1]*i%mod;
}
inv[maxn]=qpow(fac[maxn],mod-2,mod);
for(register int i=maxn;i;i--)
{
inv[i-1]=inv[i]*i%mod;
}
}