现在的位置: 首页 > 综合 > 正文

数论/扩展欧几里德算法

2018年02月19日 ⁄ 综合 ⁄ 共 907字 ⁄ 字号 评论关闭

扩展欧几里德算法求的是二元一次方程ax+by=c,在a,b,c已知的情况下x的最小整数值,

扩展欧几里德算法:

int r=exgcd(a,b,X,Y)

当c%r==0时:

b/=r;

c/=r;

x的最小整数值x1=(c*X%b+b)%b

否则不存在x的最小整数解。

题目poj 1061

这题先列出式子,设跳了xi步之后他们会相遇。则有公式

(xi*m+x)-(xi*n+y)=kl(k=1,2,3.....)或者(xi*n+y)-(xi*m+x)=kl(k=1,2,3.....)

化简成xi(m-n)+kl=y-x或者xi(n-m)+kl=x-y。

刚好符合扩展欧几里德的公式要求,a=m-n(m>n)或者n-m(n>m),b=k,c=y-x(m>n)或者x-y(n>m),这样套扩展欧几里德公式求xi的最小正整数就行了,代码

 

抱歉!评论已关闭.