嗯,作为$NOIP2012tg \; Day2T1$还是比较合适的,只不过题面。。。。(可能是出题人yy不出来了)
题目描述
求关于$x$的方程$ax \equiv 1(mod \;b)$的最小正整数解。
输入输出格式
输入格式
一行,包含两个正整数$a,b$。
输出格式
一个正整数 $x_0$ ,即最小正整数解。输入数据保证一定有解。
INPUT & OUTPUT’s examples
Input’s eg #1
1 | 3 10 |
Output’s eg #1
1 | 7 |
说明
对于 40%的数据,$2 \leq b \leq 10^3$
对于 60%的数据,$2 \leq b \leq 5 \times 10^7$
对于 100%的数据,$2 \leq a, b \leq 2 \times 10^9$。
分析
题面已经裸到一句话了。。。。
我们把原始题面魔改一下:
$$ax \equiv 1(mod\; b)$$
因为我们最后$mod\;b$,所以在同余式左边加一个$b \times y$不会影响结果。
$$ax+by \equiv 1(mod\;b)$$
但是我们的扩展欧几里得算法是用来求解以下算式的:
$$ax+by \equiv gcd(a,b)$$
所以显然可以看出得出结论:$gcd(a,b)=1$,即$a,b$互质。
由欧几里得算法可得:
$$gcd(a,b)=gcd(b,a\%b)$$
我们假设有另一组解$x_2,y_2$存在,
那么:
$$b \times x_2+(a \% b)\times y_2 \equiv ax+by \equiv 1$$
魔改:
因为,
$$a \% b = a - \lfloor \frac{a}{b} \rfloor \times b$$
所以,
$$bx_2+(\frac{(a-b)a}{b})y_2 \equiv ax+by$$
乘法分配律:
$$bx_2+ax_2-y_2(\frac{ab}{b}) \equiv ax+by$$
继续化简:
$$ay_2+b(x_2-y_2(\frac{a}{b})) \equiv ax+by$$
类比之前的式子:
$$x=y_2,y=x_2-y_2(\frac{a}{b})$$
直接一层层递归即可
代码
1 | /* Headers */ |