
欧几里得
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 · 437 阅读 · 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 · 432 阅读 · 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 · 438 阅读 · 0 评论