关于拓展欧几里得(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 进行授权
本文今日阅读量: 加载中... 次 本文总阅读量 加载中... 次