![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
欧几里得
lp_opai
我没有时间写一封简短的信,所以我写了一封长的。
展开
-
zoj 2609 Modular Inverse (ex_gcd)
/* 模线性方程ax=b (mod n),令d=exgcd(a,n),该方程有解的充要条件为 d | b ,即 b% d==0 方程ax=b(mod n)的最小解 :x=(x*(b/d))%n 方程ax=b(mod n)的最小正数解: x=(x%(n/d)+n/d)%(n/d) 因为要求输出最小整数,所以如果答案为0的话,肯定是m=1的情况,此情况应输出1. */ # include #原创 2015-04-04 20:44:27 · 400 阅读 · 0 评论 -
poj 1061 青蛙的约会 ex_gcd
/* 思路:两只青蛙跳一次所花费的时间相同,我们设其为t,则x+mt是青蛙A从坐标原点到终点所走的距离, y+nt是B走的距离,要想碰面,则他们相减一定是地面周长的整数倍,设为k*L;则:(x+mt)-(y+nt)=kl; 变形得:(m-n)t-(y-x)=kL;即有(m-n)t mod L=y-x;为线性同余方程。 此方程有解当且仅当y-x能被m-n和L的最大公约数(记为gcd(m-n原创 2015-04-05 21:03:42 · 410 阅读 · 0 评论 -
hdu 1576 A/B
/* 解决该题的关键是: 1、了解扩展欧几里德算法,可以运用其解出gcd(a,b)=ax1+by1中的x1、y1的值 2、由题可得以下内容: n=A%9973,则n=A-A/9973*9973。又A/B=x,则A=Bx。所以Bx-A/9973*9973=n。即Bx-9973y=n。 到这里我们可以发现:只要求出x的值,即可算出x%9973,也就是(A/B)%9973了。顺利解决了! 3、原创 2015-04-06 11:07:07 · 390 阅读 · 0 评论