萌新求助这样是不是不会溢出
查看原帖
萌新求助这样是不是不会溢出
242973
hly1204楼主2020/9/12 09:59

假设有一组 {xa(modm1)xb(modm2)\begin{cases}x\equiv a\pmod{m_{1}}\\x\equiv b\pmod{m_{2}}\end{cases}

然后

k1m1+a=k2m2+b    k1m1k2m2=bak_{1}m_{1}+a=k_{2}m_{2}+b\iff k_{1}m_{1}-k_{2}m_{2}=b-a

然后我用 exgcd 求出 X,Ym1X+m2Y=gcd(m1,m2)X,Y\mid m_{1}X+m_{2}Y=\gcd(m_{1},m_{2})

假设 d=gcd(m1,m2)d=\gcd(m_{1},m_{2}) ,那么

k1X(ba)/d(modm2/d)    {k1m1/d(ba)/d(modm2/d)Xm1/d1(modm2/d)k_{1}\equiv X\cdot (b-a)/d\pmod{m_{2}/d}\impliedby\begin{cases}k_{1}\cdot m_{1}/d\equiv (b-a)/d\pmod{m_{2}/d}\\X\cdot m_{1}/d\equiv 1\pmod{m_{2}/d}\end{cases}

然后我直接令 x=k1m1+ax=k_{1}m_{1}+a ,这里不用二进制加法模拟乘法也不对最小公倍数取模,是不是没问题,只有在求 k1k_{1} 的时候才需要用二进制加法模拟乘法,这样对吗?

2020/9/12 09:59
加载中...