1477: 青蛙的约会

Time Limit: 2 Sec  Memory Limit: 64 MB
Submit: 261  Solved: 164
[Submit][Status][Discuss]

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

HINT

Source

题解:经典的扩展欧几算发,没记错的话我貌似在poj上A过此题= =
 1 /**************************************************************
 2     Problem: 1477
 3     User: HansBug
 4     Language: Pascal
 5     Result: Accepted
 6     Time:0 ms
 7     Memory:224 kb
 8 ****************************************************************/
 9
10 type
11     vec=record
12               x,y:int64;
13     end;
14 var
15    i,j:longint;
16    k,l,m,n,x,y,x1,x2,x3:int64;
17    a1,a2:vec;
18 function ex_gcd(a,b:int64):vec;
19          var
20             a1,a2:vec;
21          begin
22               if b=0 then
23                  begin
24                       a1.x:=1;a1.y:=0;
25                       ex_gcd:=a1
26                  end
27               else
28                   begin
29                        a1:=ex_gcd(b,a mod b);
30                        a2.x:=a1.y;
31                        a2.y:=a1.x-(a div b)*a1.y;
32                        ex_gcd:=a2;
33                   end;
34          end;
35 function gcd(x,y:int64):int64;
36          var
37             z:int64;
38          begin
39               while y<>0 do
40                     begin
41                          z:=x mod y;
42                          x:=y;
43                          y:=z;
44                     end;
45               gcd:=x;
46          end;
47 begin
48      readln(x,y,m,n,l);
49      a1:=ex_gcd(m-n,-l);
50      k:=gcd(m-n,-l);
51      if ((y-x) mod k)<>0 then
52         begin
53              writeln('Impossible');
54              halt;
55         end;
56      x1:=(y-x) div k;
57      a1.x:=a1.x*x1;
58      a1.y:=a1.y*x1;
59      if a1.x>0 then a1.x:=a1.x mod l else a1.x:=((a1.x mod l)+2*l) mod l;
60      writeln(a1.x);
61 end.

转载于:https://www.cnblogs.com/HansBug/p/4472318.html

1477: 青蛙的约会相关推荐

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

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

  2. 【扩展欧几里得】Bzoj 1477:青蛙的约会

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

  3. BZOJ 1477: 青蛙的约会

    扩展欧几里得 我好菜啊恶补一波 列出方程(t*n+x)-(t*m+y)=kL <=> (n-m)*t-kL=y-x 注意一下正负 #include<cstdio> #defin ...

  4. [BZOJ1477] 青蛙的约会|扩展欧几里得算法

    1477: 青蛙的约会 Time Limit: 2 Sec  Memory Limit: 64 MB Submit: 306  Solved: 192 [Submit][Status][Discuss ...

  5. POJ 1061 BZOJ 1477 Luogu P1516 青蛙的约会 (扩展欧几里得算法)

    POJ 1061 BZOJ 1477 Luogu P1516 青蛙的约会 (扩展欧几里得算法) 手动博客搬家: 本文发表于20180226 23:35:26, 原地址https://blog.csdn ...

  6. P1516 青蛙的约会 [exgcd]

    P1516 青蛙的约会 题意:在一个长为\(l\)的环上面有两只青蛙,一只出发点为\(x\),一次跳\(m\),另一只出发点为\(y\),一次跳\(n\),求相遇时间. 这个长为\(l\)的环不难想到 ...

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

                                                                   青蛙的约会 Time Limit: 1000MS   Memory Lim ...

  8. 数学--数论--POJ 1061青蛙的约会 (扩展欧几里得算法)

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

  9. 数论:扩展欧几里德(洛谷P1516 青蛙的约会)

    欧几里德 基本思想:gcd(q,r)=gcd(r,q%r); 证明,设q.r的最大公因数为a,则q=xa,r=ya,xy互质 不妨设x>y(显然如果小于会在一次gcd运算后交换) 则q%r=(x ...

最新文章

  1. wikioi 1083 Cantor表
  2. ActionScript 3.0 Step By Step系列(五):走在面向对象开发的路上,以类为基础去思考编程问题...
  3. pytorch nlp 语音识别任务如何进行数据加载
  4. Java 程序员必备的 Intellij IDEA 插件
  5. leetcode 66. 加一(C语言)
  6. Linux-文件查找
  7. delphi对比易语言_delphi 2007 vs E语言 vs C#运行速度 - Delphi编程
  8. .NET Framework 托管与非托管代码
  9. epoll和libevent
  10. 关于cad2010的激活
  11. NCBI获取指定区域基因序列及其引物设计
  12. linux进入终端tty3,Linux中终端界面与图形界面之间的切换关系
  13. 幽默感七个技巧_如何让自己变得幽默-16个聊天幽默技巧
  14. python in arcgis_终于晓得arcgis-python入门教程
  15. python模块之 paramiko
  16. mib browser读取飞塔mib文件的oid
  17. 二分查找法及二分搜索树及其C++实现
  18. 拥有一台云服务器如何安装宝塔面板(图文教程)
  19. 459. Repeated Substring Pattern
  20. Unity有哪些适合拿来练手的游戏项目?

热门文章

  1. 《Python Cookbook 3rd》笔记(4.16):迭代器代替 while 无限循环
  2. 10kv线路负载率计算_电工必懂计算公式,你若不会,如何立足于电力行业?
  3. 使用memcmp函数判断两个函数的前n位字节数是否相等
  4. 搭建基于飞桨的OCR工具库,总模型仅8.6M的超轻量级中文OCR,单模型支持中英文数字组合识别、竖排文本识别、长文本识别的PaddleOCR
  5. 钱与命的八句真实话(图)
  6. linux 32位平台,文件大小受限于2G的解决方法
  7. JDK8 集合排序 xxxList.stream.sorted(...)
  8. Docker 方式 部署 vue 项目 (docker + vue + nginx)
  9. 解决: idea 修改 jsp 后,页面刷新无效
  10. JeeSite 4.0 (1.0)开发环境部署运行