传送门(洛谷)

题目

两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面。 我们把这两只青蛙分别叫做青蛙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. ubuntu android studio 编译及运行错误Error retrieving parent for item: No resource found that matches the given name

    安装好android studio并且安装其它需要的SDK或组件后,根据向导生成新的项目, 编译或运行时可能会出现下面的错误: Error:Error retrieving parent for it ...

  2. 20165101 预备作业3 Linux安装及学习

    #Linux安装及命令入门 安装虚拟机 学习了娄老师的博客<基于VirtualBox虚拟机安装Ubuntu图文教程>,我下载了最新版的VirtualBox和16.04版的Ubuntu.根据 ...

  3. GetTickCount的几个案例

    一,获得运行时间: var T1,T2 : double; begin T1 := GetTickCount; //需要做的事情 T2 := GetTickCount; ShowMessage( fl ...

  4. hiho一下 第四十九周 题目1 : 欧拉路·一【无向图 欧拉路问题】

    题目1 : 欧拉路·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho最近在玩一个解密类的游戏,他们需要控制角色在一片原始丛林里面探险,收集道具,并找到最 ...

  5. Oracle数据库的三种验证机制

    关于超级管理员登陆不需要密码因为: 数据库的三种验证机制: 操作系统验证(具有sysdba和sysopera的用户) 密码文件验证(具有sysdba和sysopera的用户) 数据库验证(普通用户) ...

  6. TinkPHP 简单知识摘要

    1.Session处理 赋值:session('name','value'); //设置session 与 $_SESSION['think']['name'] = 'value';相等 取值:$va ...

  7. Queue 输出数据

    坑人的引用类型....输出看看结果是什么 Queue<ParaInfo> strStranList = new Queue<ParaInfo>(); StringBuilder ...

  8. poj-2478 Farey Sequence(dp,欧拉函数)

    题目链接: Farey Sequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14230   Accepted:  ...

  9. FJOI2016 神秘数

    题目大意 给定长为$N$一个序列,每次询问一个区间,求最小的不能表示为由区间内若干个(可以是$0$个)数的和的非负整数. 考虑一个可重集合$S$,设抽取$S$中若干个数相加无法得到的最小非负整数为$A ...

  10. ACM学习历程—HDU5475 An easy problem(线段树)(2015上海网赛08题)

    Problem Description One day, a useless calculator was being built by Kuros. Let's assume that number ...