传送门(洛谷)

题目

两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面。 我们把这两只青蛙分别叫做青蛙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
分析
根据题目我们可以得到式子
     am+x≡an+y(mod L)
我们移一下可以得到
     a(m-n)≡y-x(mod L)
所以我们可以得到
     a(m-n)+bL=y-x
我们可以将数轴的长度L分为数段,每一段的长度gcd(m-n,L)为单位一,所以我们将公式变为
     a(m-n)+bL=gcd(m-n,L)
这里我们将gcd(m-n,L)当作1来算,套入exgcd模板即可
在计算完这种情况下的a之后我们进行一个判断:
如果gcd(m-n,L)|(y-x)则将等式两边均乘(gcd(m-n,L)÷(y-x)),所以答案即为
     a*gcd(m-n,L)÷(y-x)%(L÷gcd(m-n,L))。
否则无解
代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<ctime>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
long long a,b;
inline long long gcd(long long x,long long y){
if(y>x)swap(x,y);
if(x%y==)return y;
return gcd(y,x%y);
}
inline void exgcd(long long x,long long y,long long &a,long long &b){
if(y==){
a=;
b=;
return;
}
exgcd(y,x%y,a,b);
long long z=a;
a=b;
b=z-(x/y)*b;
return;
}
int main(){
long long n,m,i,j,k,l,x,y;
cin>>x>>y>>n>>m>>l;
if(n>m){
swap(x,y);
swap(n,m);
}
k=gcd(m-n,l);
exgcd(m-n,l,a,b);
if((x-y)%k)puts("Impossible");
else cout<<((x-y)/k*a%(l/k)+(l/k))%(l/k)<<endl;
return ;
}

p1516&poj1061&bzoj1477 青蛙的约会的更多相关文章

  1. [BZOJ1477]青蛙的约会

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

  2. P1516/bzoj1477 青蛙的约会

    青蛙的约会 exgcd 根据题意列出方程: 设所用时间为T,相差R圈时相遇 (x+T*m)-(y+T*n)=R*l 移项转换,得 T*(n-m)-R*l=x-y 设a=n-m,b=l,c=x-y,x_ ...

  3. BZOJ-1477 青蛙的约会 拓展欧几里德

    充权限之前做的...才来交 1477: 青蛙的约会 Time Limit: 2 Sec Memory Limit: 64 MB Submit: 369 Solved: 233 [Submit][Sta ...

  4. BZOJ1477 青蛙的约会 扩展欧几里德

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1477 题意概括 两只青蛙,现在分别在x,y的位置,以m,n的速度在周长为L的环形跑道上面跑. 问他 ...

  5. 【poj1061】 青蛙的约会

    http://poj.org/problem?id=1061 (题目链接) 题意 两只青蛙在周长为L的球上沿一条直线向一个方向跳,每只每次分别跳m,n米,它们一开始分别在X,Y处,问跳几次两青蛙可以在 ...

  6. POJ1061:青蛙的约会——题解

    http://poj.org/problem?id=1061 Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定 ...

  7. bzoj1477: 青蛙的约会(exgcd)

    昨天打code+的时候发现自己已经不大会exgcd了..赶紧复习一下QAQ 求$ax+by=gcd(a,b)$的解 初始条件 $gcd(a, 0)=a$ $x=1,y=0$ 推导过程 $gcd(a,b ...

  8. 【BZOJ1477】青蛙的约会(拓展欧几里得)

    [BZOJ1477]青蛙的约会(拓展欧几里得) 题面 题目描述 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为 ...

  9. 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 ...

随机推荐

  1. HTTP1.1与HTTP1.0

    本文转载自: http://www.cnblogs.com/shijingxiang/articles/4434643.html 1.可扩展性 a.在消息中增添版本号,用于兼容判断,版本号只能判断逐段 ...

  2. 51nod 1513 && CF570D

    题意:给定一棵树,每个节点有一个字母.给定若干个询问,询问某个子树内某一深度的节点是否能将这些节点组合成一个回文串.(深度是以根节点为基准的,不是当前子树根.)数据规模10^5. 神犇题解 子树问题, ...

  3. EntityFramework 学习 一 Entity Lifecycle 实体生命周期

    当我们执行CRUD(Create,Read,Update,Delete)操作之前,最重要的是搞明白实体的生命周期和EntityFrameword怎么管理实体 在一个实体的生命周期里,每个实体都有一个实 ...

  4. 【转】BNF和EBNF的含义与用法

    [转]BNF和EBNF的含义与用法   BNF 和EBNF的含义与用法 1简介       关于本文       什么是BNF?工作原理       基本原理       一个实例 EBNF及其用途  ...

  5. hibernate复习第(二)天

    今日要点: 关联映射 多对一(Employee - Department) 一对多(Department - Employee) 一对一(Person - IdCard) 多对多(teachet - ...

  6. 计算机丨浏览器访问出现DNS_PROBE_POSSIBLE解决方法

    方法1.打开命令控制台输入: netsh winsock reset.提示重启,电脑重启后就ok了. 其他方法待续......

  7. Execution Context(EC) in ECMAScript

    参考资料 执行环境,作用域理解 深入理解JavaScript系列(2):揭秘命名函数表达式 深入理解JavaScript系列(12):变量对象(Variable Object) 深入理解JavaScr ...

  8. 雅礼集训 2017 Day2 水箱 可并堆

    题目描述 给出一个长度为 n 宽度为 1 ,高度无限的水箱,有 n−1  个挡板将其分为 n 个 1 - 1 的小格,然后向每个小格中注水,水如果超过挡板就会溢出到挡板的另一边,这里的水是满足物理定律 ...

  9. Java集合操作类Collections的一些常用方法

    public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(); ...

  10. [HDU5290]Bombing plan

    vjudge sol 树DP. 首先把模型转换成:每个点可以控制与它距离不超过\(w_i\)的点,先要求选出数量最少的点控制所有点. 设\(f[i][-100...100]\)表示\(i\)号点向上还 ...