数论/扩展欧几里德算法

扩展欧几里德算法求的是二元一次方程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的最小正整数就行了,代码

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值