题目描述

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

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

输入输出格式

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

其中0

题解

我们设k步时相遇,则(x+km)(modL)=(y+kn)(modL)(x+km)(modL)=(y+kn)(modL)(x+km)\pmod L=(y+kn)\pmod L
化简一下得到k(m−n)−a∗L=y−xk(m−n)−a∗L=y−xk(m-n) -a*L=y-x
我们用扩展欧几里得求出一种解然后如果小于0,就调整,即+Lgcd(a,b)+Lgcd(a,b)+\frac {L}{gcd(a,b)} a=m−na=m−na=m-n b=Lb=L b=L
欧几里得和扩展欧几里得详解

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#define ll long long
ll x,y,m,n,L;
using namespace std;
ll gcd(ll a,ll b)
{if(b==0) return a;else return gcd(b,a%b);
}
void Ex_gcd(ll a,ll b,ll &x,ll &y)
{if(b==0){x=1;y=0;return ;}Ex_gcd(b,a%b,x,y);ll temp=x;x=y;y=temp-(a/b)*y;return ;
}
ll solve()
{if(m-n<0){swap(m,n);swap(x,y);}ll a=m-n,b=-L,c=(y-x),d=gcd(a,b);
//  cout<<d; if(c%d!=0) return -1;else{ll a1=a/d,b1=b/d,c1=c/d;//  cout<<a1<<" "<<b1<<" "<<c1<<" ";a1=a1,b1=b1;Ex_gcd(a1,b1,x,y);x=x*c1;x%=(L/d);if(x<0) x+=(L/d);//把x变成正的return x;}
}
int main()
{scanf("%lld%lld%lld%lld%lld",&x,&y,&m,&n,&L);ll ans=solve();if(ans==-1) printf("Impossible");else printf("%lld",ans);return 0;
}

【P1516】青蛙的约会相关推荐

  1. P1516 青蛙的约会 [exgcd]

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

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

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

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

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

  4. P1516 青蛙的约会

    传送门 根据题意可以列出方程: 设走了X步,已经绕了维度线Y圈 那么   nX-mX=LY+(x-y) 稍微转换一下: (n-m)X - LY = x-y 如果设  A=n-m,B=-L,C=x-y ...

  5. 洛谷 P1516 青蛙的约会

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

  6. 【洛谷P1516】青蛙的约会

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

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

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

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

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

  9. 1477: 青蛙的约会

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

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

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

最新文章

  1. 1-VMware workstation认识
  2. 使用控件时提示“未声明标识符“的解决方法
  3. Zookeeper与paxos算法
  4. LeetCode 1941. 检查是否所有字符出现次数相同
  5. 分布式任务调度系统xxl-job源码探究(一、客户端)
  6. 应届生想要获取web前端开发岗位?这份技能攻略,面试攻略别错过
  7. Delphi 2009 的反射单元(ObjAuto):
  8. 兼容pc端和移动端的轮播图插件 swiper.js
  9. 计算机考研专业课408什么意思,科普:考研408是什么意思
  10. kindle索引_Kindle太费电?卡索引解决办法
  11. python宏定义_宏定义(无参宏定义和带参宏定义),C语言宏定义详解
  12. JavaWeb HTTP状态 405 - 方法不允许
  13. 计算机无法加载引导,硬盘找不到无法读取MBR(硬盘的主引导记录)故障分析及解决技巧...
  14. 计算机考证证件照没有露耳朵
  15. ovs-docker实现容器网络vlan隔离
  16. 利用html做一个3D 图片动态效果
  17. 两个乒乓球队进行比赛,各出3人。甲队为A,B,C三人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人像队员打听比赛的名单,A说他不和X比,C说他不和X,Z比,请编程序找出3对赛手的名单
  18. 淘晶驰串口屏入门(三)按钮、双态按钮、状态开关、图片、切图、触摸热区
  19. 教务系统—课程表接口信息
  20. xctf攻防世界 CRYPTO高手进阶区 告诉你个秘密

热门文章

  1. Java实现 LeetCode 756 金字塔转换矩阵(DFS)
  2. 康威生命游戏简易版python_turtle实现
  3. 计算机网络打不开怎么办,网页无法打开,详细教您有网络但是打不开网页怎么办?...
  4. Android 判断当前应用是否开启消息通知
  5. 【蓝桥杯选拔赛真题40】Scratch跳格子 少儿编程scratch蓝桥杯选拔赛真题讲解
  6. 深入浅出CChart 每日一课——第五课 回到折线图,苦逼屌丝之万丈高楼平地起
  7. 2019广东工业智造创新大赛【赛场二】感谢拼命的自己
  8. 12月给自己一个逆袭的机会,社科院与杜兰大学金融管理硕士项目期待你的加入
  9. 【红帽RHCA考试内容解析】
  10. 英语语言水平C级,国际通用的学生英语能力水平评测标准