long long gcd (long long a, long long h)
{if (b == 0)  return a;return gcd (b , a % b);
}

这里求得的x是一个特解,而不是最后解。

扩展欧几里德的最终目标是求出ax+by=gcd(a,b)的解,(即x,y)。

void e_gcd (long long int a, long long int b, long long int &x, long long int &y)
{long long t;if ( b == 0){x = 1;y = 0;return;}e_gcd (b, a % b, x, y);t = x - a / b * y;x = y;y = t;
}
 
Description
两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面。 我们把这两只青蛙分别叫做青蛙A和青蛙B,并且规定纬度线上东经0度处为原点,由东往西为正方向,单位长度1米,这样我们就得到了一条首尾相接的数轴。设青蛙A的出发点坐标是x,青蛙B的出发点坐标是y。青蛙A一次能跳m米,青蛙B一次能跳n米,两只青蛙跳一次所花费的时间相同。纬度线总长L米。现在要你求出它们跳了几次以后才会碰面。 
Input输入只包括一行5个整数x,y,m,n,L,其中x≠y < 2000000000,0 < m、n < 2000000000,0 < L < 2100000000。
Output输出碰面所需要的跳跃次数,如果永远不可能碰面则输出一行"Impossible"
Sample Input1 2 3 4 5
Sample Output4

这个题是要求(n-m)*t+l*k=x-y中的t,x-y是gcd(n-m,l)的倍数。

#include<iostream>
#include<cstdlib>
#include<cstdio>using namespace std;long long int gcd (long long int a,long long int b)
{return b == 0 ? a : gcd(b, a % b);
}
void e_gcd (long long int a, long long int b, long long int &x, long long int &y)
{long long t;if (b == 0){x = 1;y = 0;return;}e_gcd (b, a % b, x, y);t = x - a / b * y;x = y;y = t;
}int main()
{long long int r,t,x,y,m,n,l,res,X,Y;cin>>x>>y>>m>>n>>l;res=gcd(n-m,l);e_gcd(n-m,l,X,Y);if((x-y)%res||m==n){cout<<"Impossible"<<endl;return 0;}l=l/res;X=X*((x-y)/res);X=(X%l+l)%l;cout<<X<<endl;return 0;
}

欧几里得算法及扩展欧几里得相关推荐

  1. 欧几里得算法(扩展欧几里得、欧拉定理、费马小定理)

    问题描述: a 和 b的最大公约数是多少? 古代解法:辗转相除法 迭代过程:例如: {a = 15 和 b = 12  } =>{ a = 12,b =  15 - (15/12)* 12 = ...

  2. 扩展欧几里得算法_扩展欧几里得递推算法

    欧几里得算法 表示 整数 a 与 b 的最大公约数. 若 t = a % b, 则 证明略. 递推版 gcd 算法 gcd 接受变量元组 (a, b) 作为输入,输出最大公约数 (r). 我们很难直接 ...

  3. AcWing 877. 扩展欧几里得算法(拓展欧几里得模板)

    题目链接 https://www.acwing.com/problem/content/879/ 思路 由贝祖定理我们可以得到ax+by=k∗gcd(a,b)ax+by=k*gcd(a,b)ax+by ...

  4. [模板]欧几里得算法/扩展欧几里得

    最大公因数(欧几里得算法) $gcd(a,b)=gcd(b\%a,a)$(不一定需要a<b) $gcd(0,b)=b$ 1 inline int gcd(int a,int b){ 2 retu ...

  5. 欧几里得算法扩展欧几里得

    本文包括: 1.几里德算法 递归实现 2.扩展欧几里德算法 递归实现 -实际上就是把别人总结的,我认为有助于自己理解的内容copy过来,再加上几句自己的理解. 欧几里得算法 欧几里德算法又称辗转相除法 ...

  6. 逆元+费马小定理+扩展欧几里得

    逆元:(即是逆元素)逆元素是指一个可以取消另一给定元素运算的元素. 在一个代数系统(S,*)中,存在单位元素e,如果对S内的元素a存在a^-1 * a = e,则将 a^-1称为a 的左逆元. 同理若 ...

  7. 欧几里得算法及其扩展

    先来看看欧几里得算法: 1 public class Gcd { 2 /** 3 * 欧几里德算法,即辗转相除法 最大公约数 4 */ 5 public static long gcd(long m, ...

  8. 欧几里得与扩展欧几里得总结

    欧几里得 来看看一个常见的\(gcd\)代码 int Gcd(a,b){return (b==0)?a:Gcd(b,a%b); } 入门的一个知识吧,但是你会证明吗? \(emmm\) 好吧我就只是背 ...

  9. 欧几里得和扩展欧几里得

    别人总结的,很详细,http://www.cnblogs.com/frog112111/archive/2012/08/19/2646012.html 欧几里得算法,就是人们常说的辗转相除法,比较好理 ...

最新文章

  1. ecshop模板的原理分析
  2. dedecms 会员网站UID注册名转MID
  3. Playframework2 标签速记
  4. python3.4 安装numpy报错_python2.7安装numpy报错:is not a supported wheel on...
  5. Android之app作为服务器解决跨域问题
  6. 前端学习(1272):路由的基本概念和说明
  7. U-Net++粗略解释
  8. 深入浅出谈CUDA(二)
  9. 金山云和金山办公均成功上市 雷军揭秘背后原因
  10. 移动机器人综合性能对比分析
  11. 2020-08-03 手动编译Qt库(msvc2019版本)
  12. Proteus:51仿真入门
  13. python中options类_python命令行参数解析OptionParser类用法实例
  14. rainmeter 新人使用记录
  15. java服务器接收coap协议数据_CoAP协议-以Java为例的Californium初步实现
  16. IT业台风警报(一)——望天
  17. linux生成表格的后缀,使用XSSFWork创建的xlsx后缀Excel文件无法打开
  18. 免费的可视化Web报表工具,JimuReport v1.4.4-beta版本发布
  19. 管理者失败的七大原因
  20. 博睿孟曦东:致力于提升企业关键业务可靠性与稳定性使其IT质量可视化

热门文章

  1. 15必须掌握的win7快捷键
  2. 线性表的创建和基本操作
  3. SetChatRoomDesc 设置群公告
  4. Supervised Contrastive Learning For Recommendation
  5. 锄头哥直播技术探讨----基础普及篇
  6. Jquery考试面试题(一)
  7. Python生成对角矩阵和对角块矩阵
  8. JavaWeb旅游项目登陆功能
  9. 华为路由器(可网管)连接光猫配置(光猫为路由模式)
  10. 云系列--- Openstack Placement组件 | 参数说明 | 详细讲解