欧几里得算法初步 & NOI Openjudge 4975 两只鼹鼠


膜几位有借鉴意义的大神的文章:

百度百科-不定方程

zhj5大犇

Accept大犇


官网地址

Description

一个圆形花圃被分为k个扇形区域(0,1,…,k-1)。有两只小鼹鼠A,B分别位于其中的两个区域。鼹鼠从一个扇形区域移动到相邻的区域需要1分钟。已知A鼹鼠总是沿顺时针方向移动(序号增大),B鼹鼠总是沿逆时针方向移动(序号减小),两只鼹鼠都是每隔一段时间钻出地面一次。

请你求出两只鼹鼠第一次同时在同一个扇形区域钻出地面的时间。

Input

  • Line 1:一个整数k (1k10000) ,表示扇形区域的个数。
  • Line 2:两个整数 la lb (0la,lb<k) ,分别表示两只鼹鼠初始时所处的位置。
  • Line 3:两个整数 ta tb (0<ta,tb<100) ,分别为两只鼹鼠钻出地面的间隔时间。
  • Line 4:两个整数 fa fb (0fa<ta,0fb<tb) 分别为两只鼹鼠第一次钻出地面的时间。

Output

用一个整数表示两只鼹鼠第一次同时在同一个扇形区域钻出地面的时间。

若两只鼹鼠永远无法相遇,输出“no answer”。

Sample Input

7
1 5
3 5
1 2

Sample Output

37


欧几里得算法初步

1)辗转相除法

求解问题:两个整数a,b的最大公约数

Code:

int gcd(int a,int b){
    if(!b)return a;
    return gcd(b,a%b);
}

证明 gcd(a,b)=gcd(b,a%b)

r=a%b ,则有 a=kb+r

  • d a,b 的任意一个公因数,则有 dadbdr=akb
  • 另设 d b,r 的任意一个公因数,则有 dbdr=akbda=kb+r

由上可知 d 既是 a,b 的公因数,又是 b,a%b 的公因数,于是最大公约数也成立。命题得证。

2)扩展欧几里得算法

求解问题:在求解两数的最大公约数同时,可以求得二元一次不定方程 ax+by=gcd(a,b) (a,bN+ora=0,bN

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值