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

多时间尺度源储荷微电网协调调度+日前日内实时+需求响应——附代码

为提高区域电网新能源消纳率,使电力系统运行成本最小,提高电力系统供电可靠性。提出考虑特性分布的储能电站接入的电网多时间尺度“源–储–荷”协调调度策略。综合储能电站、负荷侧各类需求响应资源的多时间尺度特性制定日前调度计划,并通过日内滚动与实时修正实现对预测数据更高精度的保证。以系统运行成本、弃风惩罚成本、失负荷惩罚成本为目标函数,建立多时间尺度调度模型。最后通过 MATLAB 平台调用商用软件包 CPLEX 完成混合整数规划优化,结果表明该调度策略可以达到系统运行成本最优,降低弃风率的效果。

不定时分享电力优化、神经网络、数学建模等技术等 6386

POJ 1061青蛙的约会题解

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

u012403020的博客 1027

微信开放标签wx-open-launch-app样式失效?手把手教你正确设置点击区域(附完整代码)

本文详细解析了微信开放标签`wx-open-launch-app`样式失效和点击无响应的常见问题,提供了完整的解决方案和代码示例。通过分析标签内部实现机制,指导开发者正确设置点击区域和样式,确保跨平台兼容性和用户体验优化。

joy55的博客 320

告别双导航栏!微信小程序web-view嵌入H5的导航栏隐藏实战(附uniapp代码)

本文详细解析了微信小程序中web-view嵌入H5页面时出现的双导航栏问题,并提供了基于uniapp的完整解决方案。通过环境感知、动态适配和样式隔离等技术手段,实现导航栏的无缝整合,提升用户体验和屏幕空间利用率。文章包含实战代码示例和常见问题排查指南,帮助开发者快速解决这一常见痛点。

weixin_26945061的博客 345

POJ1061

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

dielie6462的博客 221

从亚稳态到稳定传输:深入解析CDC跨时钟域同步的核心技术与设计实践

本文深入解析了CDC(跨时钟域同步)技术的核心问题与解决方案,重点探讨了亚稳态现象及其危害,详细介绍了同步器设计、MTBF计算方法以及单bit和多bit信号同步的实战技巧。通过Verilog代码示例和工程实践案例,帮助读者掌握从亚稳态到稳定传输的关键技术,提升数字电路设计的可靠性。

weixin_32822843的博客 247

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

模拟滤波器的基础知识和设计

使用Python实现多种模拟滤波器

faltas的博客 3530

PGM-Explainer实验总结

PGM-Explainer建立了一个概率图模型,为GNN提供实例级解释。 论文标题:PGM-Explainer: Probabilistic Graphical Model Explanations for Graph Neural Networks 论文地址:2010.05788.pdf (arxiv.org) PGM-Explainer实验 实验目的 研究PGM-Explainer的有效性 实验方案 合成数据集的节点分类 与其他解释器做对比实验 使用六个合成数据集。 每个输入图都是一个

笔记|思路|总结 1万+

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

内模控制(IMC)——理论、应用与实践

内模控制方法的核心思想是利用被控对象的数学模型(即内模)构建控制器,使得控制器可以“预知”被控系统的动态响应,从而在控制输入中提前补偿模型的固有特性和扰动影响。常见的内模控制结构中,将系统分为无延迟部分和扰动部分,并利用内部模型预测输出值,再通过反馈回路进行误差修正。utuimctufbtutui​mctuf​bt其中,uimctu_imc(t)ui​mct为内模预测得到的预补偿控制量,ufbtu_fb(t)uf​bt。

闲人编程的博客 2634

poj 1061 青蛙的约会

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

Loi_LXTT 402

【C#程序员入门AI】AI应用的操作系统:Semantic Kernel 2026实战

用户ID用户信息

人工智能AI技术 1249

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

POJ 1061 青蛙的约会

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

旺崽的博客 2760

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

青蛙的约会 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、付费专栏及课程。

余额充值