poj1061

poj 1061青蛙的约会 青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 90083   Accepted: 16257 Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面 阅读详情
青蛙的约会

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

Source


扩展欧几里德。由于两只青蛙所跳的步数是相同的,我们设其为s,则sm+x是青蛙A从坐标原点到终点所走的距离,sn+y是B走的距离,他们相减一定是地面周长的整数倍,设为k*l;则:(ms+x)-(ns+y)=kl,变形得:(n-m)s+lk=x-y。对于方程 a*x+b*y=n;有整数解得充分必要条件是(n %gcd(a,b)==0)。我们可以先用扩展欧几里德算法求出一组x0,y0。也就是a*x0+b*y0=gcd(a,b);然后两边同时除以gcd(a,b),再乘以n,这样就得到了方程 a*x0*n/gcd(a,b)+b*y0*n/gcd(a,b)=n;我们也就找到了方程的一个解。即x=x0*n/gcd(a,b) ;y=y0*n/gcd(a,b)。若gcd(a,b)=1,且x0,y0为a*x+b*y=n的一组解,则该方程的任一解可表示为:x=x0+b*t,y=y0-a*t;且对任一整数t,皆成立。但实际问题中,我们往往被要求去求最小整数解,所以我们就可以将一个特解x,t=c/gcd(a,b),x=(x%t+t)%t;就可以了。x就是所求的最小整数解。

代码如下:

#include<stdio.h>
long long X;
long long Y;
long long extgcd(long long a, long long b) {
    long long d, t;
    if (b == 0) {
        X = 1;
        Y = 0;
        return a;
    }
    d = extgcd(b, a % b);
    t = X - a / b * Y;
    X = Y;
    Y = t;
    return d;
}

int main() {
    long long x, y, m, n, l, d, r;
    while (scanf("%lld%lld%lld%lld%lld", &x, &y, &m, &n, &l) == 5) {
        d = extgcd(n - m, l);
        r = l / d;
        if ((x - y) % d)
            printf("Impossible\n");
        else
            printf("%lld\n", ((x - y) / d * X % r + r) % r);
    }
    return 0;
}


题解: poj 1061 nefu 84(拓展欧几里得) POJ1061 Language:Default青蛙的约会 Time Limit: 1000MSMemory Limit: 10000KTotal Submissions: 105002Accepted: 20595Description两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一 阅读详情

相关推荐

POJ-1061 青蛙的约会

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

h_bby的博客 541

leetcode.403 青蛙过河-回溯解法/dp解法

题目: 一只青蛙想要过河。 假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有)。 青蛙可以跳上石子,但是不可以跳入水中。 给你石子的位置列表 stones(用单元格序号 升序 表示), 请判定青蛙能否成功过河(即能否在最后一步跳至最后一块石子上)。 开始时, 青蛙默认已站在第一块石子上,并可以假定它第一步只能跳跃一个单位(即只能从单元格 1 跳至单元格 2 )。 如果青蛙上一步跳跃了 k 个单位,那么它接下来的跳跃距离只能选择为 k - 1、k 或 k + 1 个单位。

ITZhaoYiSheng的博客 1759

阿里云Ubuntu部署Steam饥荒联机版服务器:从零到多人联机的完整指南

本文详细介绍了在阿里云Ubuntu系统上部署Steam饥荒联机版服务器的完整流程,包括环境准备、SteamCMD安装、服务端配置、Mod管理及后台运行技巧。通过2核4GB的ECS实例配置和端口设置,实现5人流畅联机体验,适合游戏爱好者快速搭建专属服务器。

weixin_29229261的博客 1025

POJ 1061青蛙的约会题解

POJ 1061青蛙的约会题解 网上似乎有不少此题的解法。我这个post和其他人的相比主要时想说下面几点。 1. 给出一个试图不死记硬背公式的思路; 2. 谈谈暴力解为什么看起来这么诱人,却无法通过; 3. 一些细节及对此题的评价(个人观点) 原题请参考poj: http://poj.org/problem?id=1061 我认为ACM/ICPC应该给人思维的快乐,甚至带有...

u012403020的博客 1027

基于CANoe的车载以太网测试

以太网测试 CANoe

Yafet 4554

解决eNSP安装WinPcap版本冲突的完整指南

网络数据包捕获工具WinPcap是网络仿真环境的基础组件,其版本兼容性直接影响eNSP等网络模拟器的正常运行。当系统已安装新版WinPcap时,eNSP内置的旧版安装程序会因版本校验机制触发报错。通过彻底卸载现有驱动、安装特定版本WinPcap 4.1.2,并验证注册表和服务状态,可解决版本冲突问题。对于需要同时使用新版驱动的场景,可采用虚拟机隔离或Npcap兼容模式。该方案适用于Windows 10/11系统环境,涉及驱动签名、虚拟网卡等典型网络工程问题。

weixin_32612263的博客 339

POJ1061

题目链接:http://poj.org/problem?id=1061 解题思路:   设两只青蛙跳了t次以后才会碰面。则有:     x + mt = y + nt + Lk (k为任意整数) (1)     (m - n)t + Lk = y - x (2)   ...

dielie6462的博客 221

新装Win10/Win11后VMware虚拟机连不上网?手把手教你排查‘网络信息不可用’(从服务检查到网段配置)

本文详细介绍了在Windows 10/11系统上安装VMware Workstation后虚拟机无法联网的排查方法。从检查VMware NAT Service、DHCP Service等关键服务状态,到重置虚拟网络编辑器配置,再到内核设备驱动问题解决,手把手教你解决‘网络信息不可用’问题。特别针对VMCI驱动故障提供了实用解决方案,帮助用户快速恢复虚拟机网络连接。

weixin_28736335的博客 771

POJ 1061青蛙的约会

Problem http://poj.org/problem?id=1061 Solution 题外话:右边是西啊。。。 本题是扩欧的必修题,就打打看了看。 我们设跳了k次碰面。 可得(x+k∗m)−(y+k∗n)=L∗p(p为整数)(x+k*m)-(y+k*n)=L*p(p为整数)(x+k∗m)−(y+k∗n)=L∗p(p为整数) 我们将其化简,可得: (n−m)∗k+L∗p=x−y(n-m)*...

Larry1118的博客 216

手把手教你用RSoft BPM仿真一个1x2光分束器:从参数设置到结果分析全记录

本文详细介绍了使用RSoft BPM模块设计和仿真1×2光分束器的完整流程,包括参数设置、结构建模、仿真配置和结果分析。通过实战指南,帮助读者掌握光波导器件的仿真技术,实现50:50功率分配的设计目标,适用于光通信和集成光学领域的研究与应用。

weixin_30545945的博客 545

Label Studio保姆级教程:从零搭建医疗影像标注平台(DICOM格式支持)

本文提供基于Label Studio从零搭建医疗影像标注平台的保姆级教程。针对DICOM格式支持,详细阐述了环境部署、DICOM深度集成与预处理、团队协作权限管理以及质量审核闭环等核心环节,旨在构建一个高效、可落地的医疗AI数据标注解决方案,助力模型落地。

nft7creator的博客 304

POJ 1061

/* * poj_1061.c * accepted * refer to: http://www.cnblogs.com/comeon4mydream/archive/2011/07/18/2109060.html */ #include typedef long long int int64; static int64 extGcd (int64 a, int64 b, int64

当年小丑 930

自动换挡频率计的设计精髓:如何用数字电路优雅地解决量程切换难题

本文深入解析了自动换挡频率计的设计精髓,重点探讨如何利用数字电路优雅解决量程切换难题。通过74系列通用数字集成电路构建智能化的自动量程切换系统,详细介绍了状态检测、决策逻辑和档位执行等核心模块的设计方法,并对比了不同实现方案的优劣,为电子测量领域的工程师提供了实用的硬件设计参考。

weixin_27869497的博客 407

poj 1061 青蛙的约会

•先让我吐槽一番: 啊啊啊啊啊恶心的数论让我颓了一下午的数论! 数论最恶心,数论最恶心,数论最恶心……重要的事情说三遍! 不管了好不容易懂了一个数论题,赶紧跑来写博客(以后不会了就来):————————萌萌哒分割线———————–<经典问题>poj 1061 青蛙的约会前言: 先来一段exgcd推导: –>对于方程 ax+by=c; –>当且仅当 c=k*gcd(a,b)时,方程有解;

Loi_LXTT 402

C# MES通信从入门到精通(1)——串口传输文件

本文详细介绍了在Mes通信领域如何使用串口发送文件,由实战经验总结,堪称MES通信领域的葵花宝典!

qq_34059233的博客 3752

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

POJ 1061 青蛙的约会

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

旺崽的博客 2760

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

POJ1061 青蛙的约会

1 /* 2 POJ1061 青蛙的约会 3 http://poj.org/problem?id=1061 4 扩展欧几里得 5 6 原题为求t使得,存在l满足 7 (x+mt)-(y+nt)=cl 8 即求 9 cl+(n-m)t=x-y 10 * 11 * 12 * 13 */ 14 15 ...

dianan9456的博客 118

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

青蛙的约会 POJ - 1061

http://poj.org/problem?id=1061 两只青蛙是同时跳的 如果两只青蛙的步子一样大 那永远也无法相遇 否则 考虑用拓展欧几里得求(a*x)%b=c的最小非负整数解 将步子之差(m-n)作为a 总长度l作为b 初始距离y-x作为c(注意不能是(x-y))即可 #include <cstdio> #include <cstring> ...

sunyutian1998的博客 244

POJ1061题解

POJ1061题解题意两只青蛙在一维数轴从不同的起点以不同的速度出发,想知道能否在某一点相遇。笺释设青蛙A的出发点坐标是x,青蛙B的出发点坐标是y。青蛙A一次能跳m米,青蛙B一次能跳n米,两只青蛙跳一次所花费的时间相同。纬度线总长L米 青蛙A移动了x+mt,青蛙b移动了y+nt。 也就是要求一个t使得(x+mt) mod l=(y+nt) mod l 转化为求解同余方程(m-n)t=y-x m

SoniciSika 476

poj1061(扩展欧基里德定理)

题目链接:https://vjudge.net/problem/POJ-1061 题意:在一个首位相接的坐标轴上,A、B开始时分别位于X,Y处,每个单位时间向右移动m,n米,问是否能相遇,坐标轴长L。 思路:与poj2115几乎一样,扩展欧基里德模板题。题意即X+m*x=Y+n*x (mod L),x为最短相遇时间,转换后:(m-n)*x+L*y=Y-X (mod L),令a=m-n,b=L,...

weixin_34055910的博客 98

poj1061 青蛙的约会 终于明白了那个%

http://poj.org/problem?id=1061 这题是大多大佬介绍完扩展欧几里得后拿来练习的。于是第一次做的时候就严格按照扩展欧几里得的办法, x = x+k(c/gcd), y = y - k(c/gcd)了。 今天回过头来再看的时候发现还有一种处理负数的办法,就是在最后处理时先取模,再加模,再取模 第一步取模,使得到的答案绝对值小于模,加上模后使得值大于0但小于模 当时...

solego’s blog 250

POJ 1061 不定方程

POJ 1061 题目链接: 题意: A从x出发,每次走m步;B从y出发,每次走n步,两人走的总步数需要余L。问至少走多少步才能相遇,不能相遇则输出Impossible 思路: 解不定方程版题。 不定方程,即ax + by = c,a、b、c为常数,x、y为变量。求其中整数解。 定理:ax + by = c’的所有c’中,得到最小的c’是gcd(a,b),详见算法导论。 故求解方案

beihai2013 355

POJ1061青蛙的约会

poj 1061青蛙的约会  http://poj.org/problem?id=1061  题意:有两只青蛙,一只在坐标x,另一直在坐标y,青蛙x一次跳跃可以前进m单位距离,青蛙y一次跳跃可以前进n单位的距离,两青蛙都在同一纬度,该纬度长度为L。两只青蛙同方向同时跳啊跳,问你最少跳多少次,它们才可以相遇,如果不能相遇,输出impossble 这个题老是纠结正负有没有影响。。答案是没有

mayuqing98的博客 271

poj1061 扩展欧几里得算法

poj1061青蛙的约会 首先要列出关系方程: 由于两个青蛙是往同一个方向跳跃的,所以两只青蛙相遇的时候,一定是一只青蛙比另一只青蛙多跳整数圈数。 设跳跃的次数为t,圈数为p,那么     (x+mt)-(y+nt)=pl 即t(n-m)-pl=x-y 此题就是求t的最小正整数解 其中n-m、l、x-y已知,所以这是一个有两个未知量的不定方程,那么就要用扩展欧几里得算法。 扩展欧几

竹丙丙丙丙 441
上一篇: poj1006
下一篇: poj2891
lulining
博客等级 码龄15年 8粉丝 0原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值