Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 128285   Accepted: 27962

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 Input

1 2 3 4 5

Sample Output

4

Source

  
  问题可以转化为 ax+by=c  (c=k*gcd(a,b))  来求解。
  先求出来(m-n)*a+L*b=y-x  (mod L) ,然后再将a扩大c/(y-x)倍得到原方程的解,有可能是负数,所以要取模,得到最小值。
 对于ax+by=c   的一组解x0,y0  有通解  x=x0+b/gcd(a,b)  y=y0-a/gcd(a,b) ,  
  

 #include<iostream>
#include<cstdio>
using namespace std;
#define LL long long
#define mp make_pair
#define pb push_back
#define inf 0x3f3f3f3f
void exgcd(LL a,LL b,LL &d,LL &x,LL &y){
if(!b){d=a,x=,y=;}
else{
exgcd(b,a%b,d,y,x);
y-=x*(a/b);
}
}
int main(){
LL x,y,m,n,L;
while(cin>>x>>y>>m>>n>>L){
if(m<n){
swap(x,y);
swap(m,n);
}
LL a,b,d;
exgcd(m-n,L,d,a,b);
if((y-x)%d||m==n){
puts("Impossible");
continue;
}
printf("%lld\n",((a*(y-x)/d)%(L/d)+L/d)%(L/d));
}
return ;
}

最新文章

  1. ubuntu15.10 或者 16.04 或者 ElementryOS 下使用 Dotnet Core
  2. Centos中的Docker 配置:将loop-lvm改为derict-lvm
  3. GATK使用说明-GRCh38(Genome Reference Consortium)(二)
  4. 关于sources.list和apt-get [转载]
  5. C#常用的集合类型(ArrayList类、Stack类、Queue类、Hashtable类、SortedList类)
  6. android 4.2 root
  7. SNS
  8. 1132: 零起点学算法39——多组测试数据(a+b)
  9. java构建学生管理系统(一)
  10. java后台服务器实现极光推送
  11. Flask实战-留言板-使用Faker生成虚拟数据
  12. 寒假小软件开发记录06--apk生成
  13. BIOS备忘录之EC常用知识点
  14. php源码学习——开篇
  15. 搭建redsocks 测试环境
  16. linux之shell终端使用操作快捷键
  17. python 三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数
  18. UINavigationController 、UINavigationBar 、UINavigationItem 超清晰直观详解(扩展)
  19. Maven安装(linux系统)
  20. Java基础之PDF文件的合并

热门文章

  1. [luogu]P1852跳跳棋
  2. python测试框架&amp;&amp;数据生成&amp;&amp;工具最全资源汇总
  3. js_提示是否删除小案例
  4. [osgearth][原]仿照谷歌,修改oe漫游器中focal(视角切换)功能
  5. npm i和npm install的区别
  6. axios写法
  7. centos7在upgrade的时候显示:Delta RPMs disabled because /usr/bin/applydeltarpm not installed
  8. RestTemplate学习
  9. tomcat去除项目名部署
  10. Eclipse 隐藏已关闭的项目