费马小定理
long long ksm(long long x,long long y,long long mo)
{
long long cnt=1;
while(y)
{
if (y&1) cnt=(cnt*x)%mo;
x=(x*x)%mo;
y>>=1;
}
return cnt;
}
long long NY(long long a,long long p) {return ksm(a,p-2,p);}
拓展欧几里得
int exgcd(int a,int b,int &x,int &y)
{
if (b == 0)
{
x=1;
y=0;
return a;
}
int ret=exgcd(b,a%b,y,x);
y-=a/b*x;
return ret;
}
int exgcd2(int a,int b,int &x,int &y)
{
if (b == 0)
{
x=1;
y=0;
return a;
}
int ret=exgcd2(b,a%b,x,y);
int t=x;
x=y;
y=t-a/b*y;
return ret;
}
线性
void NY(int p)
{
ny[1]=1;
for (int i=2;i<p;i++)
{
ny[i]=(long long)(p-p/i)*ny[p%i]%p;
}
}
使用条件
表格偷的huge的orz

由于huge没写欧拉的所以蓝蛋sbmqwm也不写了