乘法逆元

预处理:

s[0] = 1;
for (int i = 1; i <= n; i++) s[i] = s[i - 1] * i % p;
sv[n] = qpow(s[n], p - 2);
for (int i = n; i >= 1; i--) sv[i - 1] = sv[i] * a[i] % p;
for (int i = 1; i <= n; i++) inv[i] = sv[i] * s[i - 1] % p;

\(mod\) 为质数,费马小定理秒了。

非质数用扩展欧几里得算法。

每一步,让 \(x' = y,\ y' = x - [a / b]y\)

int exgcd(int a, int b, int $x, int $y) {
	if (b == 0) {x = 1, y = 0; return a;}
	int d = exgcd(b, a % b, x, y), z = x;
	x = y, y = z - y * (a / b);
	return d;
}

lyd de 例题

没有。

posted @ 2024-10-30 21:11  Razer_Sun  阅读(16)  评论(0)    收藏  举报