POJ1061:青蛙的约会——题解
2024-10-20 13:40:45
http://poj.org/problem?id=1061
Description
两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面。
我们把这两只青蛙分别叫做青蛙A和青蛙B,并且规定纬度线上东经0度处为原点,由东往西为正方向,单位长度1米,这样我们就得到了一条首尾相接的数轴。设青蛙A的出发点坐标是x,青蛙B的出发点坐标是y。青蛙A一次能跳m米,青蛙B一次能跳n米,两只青蛙跳一次所花费的时间相同。纬度线总长L米。现在要你求出它们跳了几次以后才会碰面。
我们把这两只青蛙分别叫做青蛙A和青蛙B,并且规定纬度线上东经0度处为原点,由东往西为正方向,单位长度1米,这样我们就得到了一条首尾相接的数轴。设青蛙A的出发点坐标是x,青蛙B的出发点坐标是y。青蛙A一次能跳m米,青蛙B一次能跳n米,两只青蛙跳一次所花费的时间相同。纬度线总长L米。现在要你求出它们跳了几次以后才会碰面。
Input
输入只包括一行5个整数s,t,p,q,L,其中s≠t < 2000000000,0 < p、q < 2000000000,0 < L < 2100000000。
(变量名和原题不同请注意)
Output
输出碰面所需要的跳跃次数,如果永远不可能碰面则输出一行"Impossible"
Sample Input
1 2 3 4 5
Sample Output
4
设x为最终结果,则我们能列出式子:
(p - q)x = t - s (mod L)
显然该式可以转化为:
(p - q)x + Ly = t - s
再变换一下变成:
ax + by = c
变成了熟悉的exgcd问题,正常求解即可。
#include<cstdio>
#include<cctype>
#include<iostream>
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b) {
return b?gcd(b,a%b):a;
}
void exgcd(ll a,ll b,ll &x,ll &y){
if(b==){
x=;y=;
return;
}
exgcd(b,a%b,x,y);
ll temp;
temp=x;
x=y;
y=temp-(a/b)*y;
return;
}
int main(){
ll s,t,p,q,l;
cin>>s>>t>>p>>q>>l;
ll a=(p-q+l)%l,b=l,c=(t-s+l)%l,g=gcd(a,b);
if(c%g){
puts("Impossible");
return ;
}
a/=g;b/=g;c/=g;
ll x,y;
exgcd(a,b,x,y);
x=(x%b+b)%b;
x=x*c%b;
cout<<x;
return ;
}
最新文章
- linux下使用taskset设置进程cpu绑定不起作用
- 12-4mysql 查询
- 高仿bootstrap的layout效果(一)
- C++ STL stack和queue
- 在Mac OS X中使用VIM开发STM32(2)
- js作用域链
- Swift中可能失败的构造器的传播(调用)和重写
- FileOutputStream flush()
- Rest Project Performace Pressure Test
- java原生实现屏幕设备遍历和屏幕采集(捕获)等功能
- 2016-3-1 Mac下使用Hexo搭建Blog
- python --商品评价---- 数据表结构以及理解
- js 给定时间,如&#39;2013-08-30&#39;,换算和今天的天数差
- Qt界面设计基础
- 网页录像录音功能的实现之MediaRecorder的使用
- jupyter notebook的路径
- restframwork之序列化
- Real Time Render 4
- Mockito学习(zz)
- 5.C#知识点:ref和Out关键字浅谈
热门文章
- DMA是什么意思
- java 面向对象一
- 游戏人工智能 读书笔记 (四) AI算法简介——Ad-Hoc 行为编程
- 「日常训练」Watering Flowers(Codeforces Round #340 Div.2 C)
- html div内第二行文字显示不下的时候才用省略号代替 css实现
- Qt-QML-Repeater-导航条
- python基础之变量和简单数据类型
- C++0x,std::move和std::forward解析
- leetcode-分割回文子串
- leetcode个人题解——#5 Container with most water