题目:

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

我们把这两只青蛙分别叫做青蛙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

分析

拓展欧几里得以前记过

分析一下设见面时间为t。青蛙A的位置是x mt;青蛙B的位置是y nt;两只青蛙项目,那么说明两只青蛙之间要么谁比谁多整数圈数。那么就得到x mt-(y nt)=k*L.变形一下(m-n)t-kL=(y-x).这就是m-n,L,y-x分别已知,而t和k未知,求最少的t.(t越少跳的越少。)

那么设m-n=a,L=b,t=X,-k=Y,y-x=c.原始就是aX bY=c,其中a,b,c已知,求X最小正整数。你要判断c是否与gcd(a,b)互质,如果不互质则没有结果。

接着你求出的初始X是gcd(a,b)的情况,你要判断c是否是gcd的倍数,如果跟他互质,那么凉凉,不可能遇到,不满足extgcd的条件,如果是倍数。假设n倍,你可以你可以nXa,nYa,c相当于同时扩大倍的一种解,但是这不一定是最优解,你需要根据实际加减操作找到最小正解!

ac代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;public class poj1061 {static long X=0; static long Y=0;public static void main(String[] args) throws IOException {// TODO 自动生成的方法存根StreamTokenizer in=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));in.nextToken();long x=(long)in.nval;//A起始位置in.nextToken();long y=(long)in.nval;//B起始位置in.nextToken();long m=(long)in.nval;//A的速率in.nextToken();long n=(long)in.nval;//B的速率in.nextToken();long L=(long)in.nval;//长度long a=m-n;long c=y-x;long b=L;if(a<0) {a=-a;c=-c;}long res=extgcd(a,b);// res=gcd(a,b)//c必须是res的倍数,如果互质的话就不满足拓展欧几里得的方程式,而对应的结果首先要跟着倍数扩大if(c%res!=0) {out.println("Impossible");}else {/** 可能难理解一点* x=x0 (b/gcd(a,b))*t* x=x0 (b/res)*t找到最小的正整数x,那么就是x%(b/res)了,如果小于0就是(x%b/res) b/res了*/X=X*(c/res);long t=b/res;if(X>=0)X=X%t;elseX=X%t t;out.println(X);}out.flush();}private static long extgcd(long a, long b) {if(b==0){X=1;Y=0;return a;}long res=extgcd(b, a%b);long team=X;X=Y;Y=team-(a/b)*Y;return res;}
}

github地址

  • 欢迎关注我的个人公众号:bigsai

poj1061-青蛙的约会(拓展欧几里得java)相关推荐

  1. bzoj 1477 青蛙的约会 拓展欧几里得(详细解析)

    大水题: 题目戳这里:http://www.lydsy.com/JudgeOnline/problem.php?id=1477 这道题我们分析在一个数轴上有两只青蛙,这个数轴是首尾交接的,所以可以一直 ...

  2. POJ 1061 青蛙的约会 (扩展欧几里得)

    青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 97673   Accepted: 18409 Descripti ...

  3. POJ - 1061 青蛙的约会(扩展欧几里得)

    题目链接:点击查看 题目大意:两只青蛙在一个单向循环数轴上跳动,给出初始位置和每秒跳动的距离以及数轴长度,问是否可以相遇,若能相遇求出最小时间 题目分析:自从第一次接触扩展欧几里得以来已经有半年时间了 ...

  4. JZYZOJ1371 青蛙的约会 扩展欧几里得 GTMD数论

    http://172.20.6.3/Problem_Show.asp?id=1371 题意是两个青蛙朝同一个方向跳 http://www.cnblogs.com/jackge/archive/2013 ...

  5. POJ1061青蛙的约会(拓展欧几里得)

    青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 146847 Accepted: 34169 Description ...

  6. 拓展欧几里得+例题~

    扩展欧几里德算法: 应用: ①求解不定方程 ②求解同余方程 ③求解模的逆元 看欧拉定理看吐了也还是有超级~~多的题目不会做,看的有晕又困!难受,看会别的压压惊~~希望拓展欧几里德的题目能对我稍稍稍稍稍 ...

  7. 详细讲解【拓展欧几里得】

    exgcd(拓展欧几里得) 1.回顾辗转相除法求最大公倍数: (辗转相除法和下面所讲到的算法里面的m和n没什么关系可正可负 更没有大小关系的区分) 代码: #include<stdio.h> ...

  8. 拓展欧几里得定理的应用

    扩展欧几里得定理的运用 首先,先重复一下拓展欧几里得的内容: 对于不全为 0 的整数a.b,一定存在一组解 x,y,使得 ax + by == gcd(a,b) 先说一下这个定理的三个用处(但是小细节 ...

  9. 拓展欧几里得模板/求逆元模板(java)

    拓展欧几里得模板 参考:哈尔滨理工大学ACM培训资料汇编/ACM-ICPC培训资料汇编* 基本原理 :设 a 和 b 不全为 0,则存在整数 x,y 使得 xa yb=gcd(a,b)=c 对于辗转相 ...

最新文章

  1. java处理json回车_json中换行符的处理方法示例介绍
  2. SolrCloud7.4(Jetty容器)+mysql oracle 部署与应用
  3. 杨辉三角java代码_【LeetCode】118. 杨辉三角(Pascal#x27;s Triangle)解题思路
  4. lamp软件包安装(rpm)
  5. StringBuffer与StringBuilder的作用与区别
  6. TensorFlow 2.0开发者测试版来啦,正式版推出指日可待
  7. UnicodeEncodeError: #39;ascii#39; codec can#39;t encode character u#39;\u5929#39; in position 2...
  8. qtvs添加qchart_如何使用Qt Designer在窗体中插入QChartView?
  9. 提高电脑反应速度_大家都能看懂的电脑内存条挑选技巧,电脑的内存条就应该这样选!...
  10. python体验课是上纯代码_附实战代码|告别OS模块,体验Python文件操作新姿势!...
  11. 亿赛通加密软件不显示小锁图标
  12. Win10系统安装失败?用这种方法一键就解决了
  13. 金融工程第十一章BSM模型复习
  14. 卡巴斯基:2019年金融行业网络威胁趋势报告
  15. 计算机应用bsp什么意思,bsp文件是什么?bsp文件怎么打开?
  16. 黑客组织“洋葱狗”潜伏3年终曝光 定期偷袭能源及交通行业
  17. 很经典的十五句话,从别人的blog上看来的!
  18. fect:基于面板数据的因果推断(上)
  19. 基尔霍夫矩阵矩阵树定理学习笔记
  20. IMMC2019(秋季赛)首批晋级国际赛队伍公布

热门文章

  1. 4.1 Qt绘图原理
  2. 检索图书 FindMess.java
  3. 密码技术--国密证书及go语言生成自签国密证书
  4. MMU关闭时Cache的缓存策略是怎样的
  5. [TT]-Trustonic acronyms
  6. md5加密算法原理及其GO语言实现
  7. 【Win32汇编】__declspec(naked)裸函数
  8. 【记忆化搜索】P1464 Function
  9. wxWidgets学习 (1) -- Hello World 详解
  10. 【网络安全】 利用 EHole 进行红队快速批量打点