文章

关于拓展欧几里得(exgcd)的输入修正问题

Luogu P1082 [NOIP2012 提高组] 同余方程 中所求答案为最小正整数

于是乎就有了这么好几种方法:

下面是两种常见的修正方法:

1
x = (x % b + b) % b;
1
x = (x + b) % b;

有大佬已经证明过,在exgcd中:

\[|x|<|b|\]

即 $ x<0 $ 时有

\[-b<x<0\]

所以我们可以得到

\[0<x+b<b\]

然后你就会发现其实不需要取模 只需要

1
2
if(x < b)
	x += b

就OK了

当然如果对于其他情况求稳还是用之前的好

本文由作者按照 CC BY 4.0 进行授权
本文今日阅读量: 加载中... 次 本文总阅读量 加载中...