线性递推求逆元模板+简易推论

void on_NY{
	inv[1] = 1;
	printf("%lld\n",inv[1]);
	for(int i = 2; i <= n; i++)
		inv[i]=((p - p / i) * (inv[p % i])%p)%p;
}

已知 x,求 x 在 % p 的逆元
已知 p = p / x × x + j ( j = = p m o d x ) p = p / x \times x + j (j==p mod x) p=p/x×x+j(j==pmodx)

所以 p ≡ 0 ( m o d p ) p ≡ 0 (mod p) p0(modp)

所以 p / x × x + j ≡ 0 ( m o d p ) p / x \times x + j ≡ 0 ( mod p ) p/x×x+j0(modp)

k = p / x k = p / x k=p/x
k × x + j ≡ 0 ( m o d p ) k \times x + j ≡ 0 (mod p ) k×x+j0(modp)

两边同乘 x − 1 × j − 1 x^{-1} \times j^ {-1} x1×j1
k ∗ j − 1 + x − 1 ≡ 0 ( m o d p ) k * j ^{-1} + x ^ { -1 } ≡ 0(mod p) kj1+x10modp)
所以 x − 1 ≡ − k × j − 1 x^{-1} ≡ -k \times j^{-1} x1k×j1
展开 x − 1 ≡ − p / k × j − 1 x^{-1} ≡ -p/k \times j^{-1} x1p/k×j1
因为 j = = p m o d e x j==pmodex j==pmodex
所以 j 的 逆元在前面求出

posted @ 2022-07-15 17:22  Nogtade  阅读(11)  评论(0编辑  收藏  举报  来源