乘法逆元

费马小定理

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
    批注 2026-04-14 115824
  • 由于huge没写欧拉的所以蓝蛋sbmqwm也不写了
posted @ 2026-04-14 11:59  msjing  阅读(10)  评论(0)    收藏  举报