青蛙的约会 (POJ - 1061)

题目链接: https://vjudge.net/contest/280753#problem/U
题意: 两只青蛙在圆圈上追赶,圆圈我们可以看作是一条首尾相接的数轴。设青蛙A的出发点坐标是x,青蛙B的出发点坐标是y。青蛙A一次能跳m米,青蛙B一次能跳n米,两只青蛙跳一次所花费的时间相同。总长L米。现在要你求出它们跳了几次以后才会碰面。
思路: 对于此题我们可以列方程 (x+mt)-(y+nt)=k*L
移项,(n-m)t+kL=x-y,这时我们可以想到此方程类似于ax+by=c的不定方程,这时我们可以用扩展欧几里德求解出一对 (x,y) 的解 ,因为这对解ax+by=1的解,所以真正为x*c/gcd(a,b);接着我们只需使得x不断减去b/d ( d为gcd(a,b) ),使得x大于0的同时最小,这时的x就是所求
由此式可知a(x-b/d)+b(y+a/d)=c b/d为每次减下的最小单位

#include<algorithm>
#include<iostream>
#include<cstdio>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值