题目描述

两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面。

我们把这两只青蛙分别叫做青蛙A和青蛙B,并且规定纬度线上东经0度处为原点,由东往西为正方向,单位长度1米,这样我们就得到了一条首尾相接的数轴。设青蛙A的出发点坐标是x,青蛙B的出发点坐标是y。青蛙A一次能跳m米,青蛙B一次能跳n米,两只青蛙跳一次所花费的时间相同。纬度线总长L米。现在要你求出它们跳了几次以后才会碰面。

输入输出格式

输入格式:

输入只包括一行5个整数x,y,m,n,L

其中0<x≠y < =2000000000,0 < m、n < =2000000000,0 < L < =2100000000。

输出格式:

输出碰面所需要的天数,如果永远不可能碰面则输出一行"Impossible"。

输入输出样例

输入样例#1: 复制

  1. 1 2 3 4 5
输出样例#1: 复制

  1. 4

说明

各个测试点2s

$$x+S*m\%L-(y+S*n)\%L=0$$

$$x-y+S*(m-n)+L*p=0$$

$$S*(m-n)+L*p=y-x$$

这样就化简成了ax+by的形式

  1. #include<cstdio>
  2. #include<cstdlib>
  3. #include<algorithm>
  4. #define LL long long
  5. using namespace std;
  6. const LL MAXN=;
  7. inline LL read()
  8. {
  9. char c=getchar();LL x=,flag=;
  10. while(c<''||c>'') {if(c=='-') flag=-;c=getchar();}
  11. while(c>=''&&c<='') x=x*+c-,c=getchar();return x*flag;
  12. }
  13. LL gcd(LL a,LL b)
  14. {
  15. return b==?a:gcd(b,a%b);
  16. }
  17. inline void IM()
  18. {
  19. printf("Impossible");
  20. exit();
  21. }
  22. LL x,y;
  23. LL exgcd(LL a,LL b,LL &x,LL &y)
  24. {
  25. if(b==) { x=,y=;return a;}
  26. LL r=exgcd(b,a%b,x,y);
  27. LL tmp=x;
  28. x=y;y=tmp-(a/b)*y;
  29. return r;
  30. }
  31. LL bgx,bgy,stepm,stepn,L;
  32. int main()
  33. {
  34. bgx=read(),bgy=read(),stepm=read(),stepn=read(),L=read();
  35. if(stepm-stepn<) swap(stepm,stepn),swap(bgx,bgy);
  36. if((bgy-bgx)%gcd((stepm-stepn),L)!=) IM();
  37.  
  38. LL r=exgcd(stepm-stepn,L,x,y);
  39. x=x*(bgy-bgx)/r,
  40. L=L/gcd(stepm-stepn,L);
  41.  
  42. x=(x%L+L)%L;//处理x可能为负
  43. printf("%lld",x);
  44. return ;
  45. }
  1. #include<cstdio>
  2. #include<cmath>
  3. #include<algorithm>
  4. using namespace std;
  5. #define LL long long
  6. inline LL read()
  7. {
  8. char ch=getchar();LL x=,f=;
  9. while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
  10. while(ch>=''&&ch<=''){x=x*+ch-'',ch=getchar();}
  11. return x*f;
  12. }
  13. LL x,y;
  14. LL exgcd(LL a,LL b,LL &x,LL &y)
  15. {
  16. if(b==)
  17. {
  18. x=;y=;
  19. return a;
  20. }
  21. LL r=exgcd(b,a%b,x,y);
  22. LL tmp=x;x=y;y=tmp-a/b*y;
  23. return r;
  24. }
  25. int main()
  26. {
  27. LL x0=read(),y0=read(),m=read(),n=read(),L=read();
  28. if(m<n) swap(x0,y0),swap(n,m);
  29. LL gcd=exgcd(m-n,L,x,y);
  30. if( (y0-x0)%gcd!= ){printf("Impossible");return ;}
  31. x=x*(y0-x0)/gcd;L=abs(L/gcd)*(y0-x0);
  32. x=(x%L+L)%L;//处理x可能为负
  33. printf("%lld",x);
  34. return ;
  35. }

洛谷P1516 青蛙的约会的更多相关文章

  1. 洛谷 P1516 青蛙的约会 解题报告

    P1516 青蛙的约会 题目描述 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件 ...

  2. 洛谷——P1516 青蛙的约会

    P1516 青蛙的约会 题目描述 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件 ...

  3. 洛谷 p1516 青蛙的约会 题解

    dalao们真是太强了,吊打我无名蒟蒻 我连题解都看不懂,在此篇题解中,我尽量用语言描述,不用公式推导(dalao喜欢看公式的话绕道,这篇题解留给像我一样弱的) 进入正题 如果不会扩展欧里几德的话请先 ...

  4. 洛谷P1516 青蛙的约会(扩展欧几里德)

    洛谷题目传送门 很容易想到,如果他们相遇,他们初始的位置坐标之差\(x-y\)和跳的距离\((n-m)t\)(设\(t\)为跳的次数)之差应该是模纬线长\(l\)同余的,即\((n-m)t\equiv ...

  5. 洛谷 P1516 青蛙的约会

    https://www.luogu.org/problemnew/show/P1516#sub 题意还是非常好理解的..... 假如这不是一道环形的跑道而是一条直线,你会怎样做呢? 如果是我就会列一个 ...

  6. P1516 青蛙的约会和P2421 [NOI2002]荒岛野人

    洛谷 P1516 青蛙的约会 . 算是手推了一次数论题,以前做的都是看题解,虽然这题很水而且还交了5次才过... 求解方程\(x+am\equiv y+an \pmod l\)中,\(a\)的最小整数 ...

  7. 【题解】P1516 青蛙的约会(Exgcd)

    洛谷P1516:https://www.luogu.org/problemnew/show/P1516 思路: 设两只青蛙跳了T步 则A的坐标为X+mT   B的坐标为Y+nT 要使他们相遇 则满足: ...

  8. P1516 青蛙的约会

    P1516 青蛙的约会x+mt-p1L=y+nt-p2L(m-n)t+L(p2-p1)=y-x令p=p2-p1(m-n)t+Lp=y-x然后套扩欧就完事了 #include<iostream&g ...

  9. 解题报告:luogu P1516 青蛙的约会

    题目链接:P1516 青蛙的约会 考察拓欧与推式子\(qwq\). 题意翻译? 求满足 \[\begin{cases}md+x\equiv t\pmod{l}\\nd+y\equiv t\pmod{l ...

随机推荐

  1. python高级-面向对象特性(12)

    一.继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产,在程序中,继承描述的是事物之间的所属关系,例如猫和狗都属于动物,程序中便可以描述为猫和狗继承自动物:同理,波斯猫和巴厘猫都继承自猫,而沙 ...

  2. css3新特性总结

    一.什么是css3 css用于控制网页的样式和布局,css3是css的升级版本,受浏览器限制,跨浏览器开发有点复杂.css3完全向后兼容 二.css3新特性 1.边框 css3的边框有如下属性: (1 ...

  3. Struts标签<bean:write><logic:iterate></logic:equal>的组合使用小例

    form表单中的一个下拉列表控件的代码如下 <select name="taskname" id="taskname" class="selec ...

  4. hibernate框架(1)---Hibernate增删改查

    Hibernate增删改查 1.首先我们要知道什么是Hibernate Hibernate是一个轻量级的ORMapping对象.主要用来实现Java和数据库表之间的映射,除此之外还提供数据查询和数据获 ...

  5. AspNetCore微服务下的网关-Kong(一)

    Kong是Mashape开源的高性能高可用API网关和API服务管理层.它基于OpenResty,进行API管理,并提供了插件实现API的AOP.Kong在Mashape 管理了超过15,000 个A ...

  6. [python]使用virtualenvWrapper

    什么是virtualenv virtualenv是python的环境管理工具,用于隔离python的运行环境.也就是说,一个项目可以有一个属于这个项目的运行环境,从而避免了因为依赖不同的模块而产生的错 ...

  7. XSS和CSRF

    说到XSS这个问题,XSS又叫跨站请求攻击,大意是说比如我发表了一篇博客,然后我在自己博客里面插入了一段恶意的js脚本代码,这段代码用于获取当前用户的cookie,并发送到我的服务器,当你们在看到这篇 ...

  8. 纸上谈兵: 伸展树 (splay tree)[转]

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!  我们讨论过,树的搜索效率与树的深度有关.二叉搜索树的深度可能为n,这种情况下,每 ...

  9. SHELL脚本--数学运算和bc命令

    bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 使用let.(()).$(())或$[]进行基本的整数运算,使 ...

  10. Linux文件权限与属性详解 之 chattr & lsattr

    Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...