青蛙的约会(扩展欧几里得)

PKU1061 解题报告 青蛙的约会 __用扩展欧几里得解模同余方程 题目描述: 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮 阅读详情
                                                                                                                                            青蛙的约会  poj1061
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 119749 Accepted: 25250

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


题目分析:
  设时间为t,则两个青蛙的位置分别为(x+mt)mod L、(y+nt) mod L,相遇即是(x+mt)%L=(y+nt)%L,即(m-n)*t+k*L=y-x。
OK,现在已经符合ax+by=c的方程了,设a=m-n,b=L,c=y-x,然后套用模板求出特解t的值,注意t>0,所以要用通解公式得出最小正整数。最后注意用long long~(如果不明白看博客扩展欧几里得2详解)


#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
ll ex_gcd(ll a,ll b,ll &x,ll &y){
    if(b==0){
        x = 1;
        y = 0;
        return a;
    }
    int r = ex_gcd(b,a%b,y,x);
    y -= x*(a/b);
    return r;
}//扩展欧几里得模板
int main(){
    ll x,y,m,n,l;
    ll a,b,c,gcd;
    scanf("%lld%lld%lld%lld%lld",&x,&y,&m,&n,&l);
    a = m-n;
    b = l;
    c = y-x;//由转化的式子用abc代替相应值
    if(a < 0){
        a = -a;
        c = -c;
    }//根据(x+mt)%L =(y+nt)%L,m-n<0说明m<n,若等式成立y<x,所以y-x<0,也要变号
    gcd = ex_gcd(a,b,x,y);
    if(c%gcd!=0){
        printf("Impossible\n");
        return 0;
    }
    x *= (c/gcd);
    b = b/gcd; //求最小整数解模板
    if(b<0)b=-b;
    if(x>=0)
        x %= b;
    else
        x = x%b + b;
    printf("%lld\n",x);
    return 0;
}


扩展欧几里得求最小非负整数解 (POJ 1061 青蛙约会为例) Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面 阅读详情

相关推荐

青蛙的约会(扩展欧几里得算法)

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

Pretty Boy Fox的博客 1262

【扩展欧几里得】青蛙的约会

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

SummerDream 190

青蛙约会 c语言源代码

青蛙约会 此题其实就是扩展欧几里德算法-求解不定方程,线性同余方程。   设过s步后两青蛙相遇,则必满足以下等式:     (x+m*s)-(y+n*s)=k*l(k=0,1,2....)   稍微变一下形得:     (n-m)*s+k*l=x-y 令n-m=a,k=b,x-y=c,即     a*s+b*l=c   只要上式存在整数解,则两青蛙能相遇,否则不能。

关于青蛙走路问题的理解( 扩展欧几里得的应用 )

关于青蛙走路问题的理解( 扩展欧几里得的应用 ) 题意是:一只青蛙在数轴的一点0处,他只可以往左跳a米或者b米,或者往右跳a米或者b米。 问这只青蛙能走到哪些点。 我们分开来看,先看这只青蛙只能往左往右走a米,得到方程: 0 + ax = want1, 这里want1是指只能走a米能到达的点, x是系数可以是任意整数。 再看这只青蛙只能往左往右走b米,得到方程: 0 + by = w...

石旭先森的博客 530

FortiClient EMS实战:从安装到配置的全流程优化指南

本文详细解析了FortiClient EMS 7.0版本的部署与优化全流程,帮助企业构建零信任终端安全体系。从环境规划、高效安装、终端纳管到高级运维,提供实战指南和优化技巧,特别适用于Windows Server环境,助力企业提升终端安全管理效率。

weixin_29325007的博客 546

工业视觉中HDR算法的动态范围优化与Debevec/Mertens方法实践

本文深入探讨了工业视觉中HDR(高动态范围)成像技术,重点解析了Debevec和Mertens两种核心算法。针对工业场景中因动态范围不足导致的过曝与欠曝问题,文章详细对比了两种方法的原理、实现步骤、参数调优及适用场景,为工程师在静态检测与高速产线等不同需求下,选择并实践HDR算法提供了清晰的指导。

weixin_29099217的博客 193

POJ 1061 青蛙的约会 笔记——扩展欧几里得

青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 123638 Accepted: 26379 Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重...

Triumphs的博客 559

奇迹mu服务端DATA文件解析:从基础配置到高级玩法

本文深入解析奇迹MU服务端DATA文件的核心配置与高级玩法,涵盖基础设置、怪物AI系统、技能战斗机制、副本事件管理及物品商城定制。通过详细示例和实用技巧,帮助开发者掌握从经验倍率调整到动态事件触发的全方位配置方法,实现个性化的私服搭建与运营。

weixin_29254673的博客 528

扩展欧几里得&&青蛙的约会

http://acm.hdu.edu.cn/webcontest/contest_showproblem.php?cid=601&amp;pid=1010&amp;ojid=1 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约...

feiliboos 112

玩转Isaac Sim动态控制:从随机舞动到精准操控Franka的5种控制模式实测

本文深入实测了在NVIDIA Isaac Sim仿真平台中,利用Dynamic Control模块对Franka机械臂进行精准操控的五种核心模式:位置控制、单关节位置控制、速度控制、单关节速度控制和力矩控制。通过详细的代码示例和对比分析,阐述了每种模式的适用场景、参数调优技巧及从随机运动到闭环控制的实现路径,为机器人算法验证提供了实用指南。

night的博客 807

hcaptcha-challenger:基于本地AI模型自动破解验证码的工程实践

验证码作为区分人类与机器的经典安全机制,其核心原理是通过图像识别、行为分析等交互式挑战来阻挡自动化程序。传统绕过方法依赖第三方打码平台或脚本,存在成本高、稳定性差的问题。随着多模态大语言模型和计算机视觉技术的发展,本地化AI求解成为新的技术方向,它通过集成YOLO、ResNet等模型,在本地完成图像语义理解,实现了高隐私、低成本、可进化的验证码自动化解决方案。这种范式尤其适用于需要大规模稳定处理网页交互的场景,如电商数据采集和社交媒体管理。hcaptcha-challenger项目正是这一理念的工程实践,它

weixin_42587866的博客 1025

洛谷 P1516 青蛙的约会(扩展欧几里得)

扩展欧几里得 两个青蛙跑步,跑的快的,追上跑得慢的。 并且多跑的路程有 L 的整数倍。 本题要点: 1、假设 A 青蛙 起点 m, 速度为 a, B 青蛙 起点 n, 速度为 b; 如果 a > b, 跑了 x 步, ax + m - (bx + n) = L * y, 化简为: (a - b) * x + L * (-y) = n - m; 这里的 n - m 可能是负数,通过模 L , 使得 方程 右边是正整数。从而得到方程: ax + by = c, (a, b, c 都是正整数) 2、 如

qq_38232157的博客 255

何恺明团队MeanFlow论文解读:单步生成模型如何实现ImageNet 256×256的SOTA效果?

何恺明团队提出的MeanFlow框架在生成式AI领域实现重大突破,通过引入平均速度场概念,在ImageNet 256×256数据集上达到单步生成3.43 FID的SOTA效果。该技术解决了传统Flow Matching方法的积分误差累积问题,显著提升生成效率与质量,为AI图像生成应用开辟新方向。

weixin_30687051的博客 397

青蛙的约会( 扩展欧几里得 )

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

石旭先森的博客 199

锂电池SOC估计 | 基于LSTM长短期记忆神经网络的锂电池SOC估计(附matlab完整代码)

锂电池SOC估计 | 基于LSTM长短期记忆神经网络的锂电池SOC估计(附matlab完整代码)

前程算法屋的博客 1022

[QMT量化交易小白入门]-五十、十年基本保证每年盈利,全天ETF候稳稳的幸福

全局参数raise_rate = -1 # 触发rebalance的上涨比例period: 设定为22,表示每22个交易日执行一次调仓(即大约每月一次)。这是策略的时间框架基础。raise_rate: 初始值设为-1,意味着默认情况下不会因为资产的涨幅而触发调仓。这一参数用于控制是否基于资产表现动态调整仓位。run_count: 用于记录策略运行的次数,帮助判断何时执行定期调仓。1、为了简便计算,回撤时将调仓再平衡是先卖出再买入,没有比较持仓,实盘时是需要计算的,减少交易费用。

木头大左的博客 806

wustoj&&poj青蛙的约会(扩展欧几里得,最小整数解)

前段时间整理了一下关于乘法逆元的集中求法,不过一直有的问题没有注意,今天做了一个题目最后求出来的解需要化为最小正整数,这个知识点以前没有涉及到,今天看到了就作了了解,现在在这里补充一下,就举今天看到的比较经典的例子吧: 题目如下: 青蛙的约会 Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它...

qq_43460290的博客 333

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

POJ 1061青蛙的约会 ,扩展欧几里得算法

POJ 1061青蛙的约会 ,扩展欧几里得算法

DJR228的专栏 733

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Poj 1061 青蛙的约会(扩展欧几里得)

Poj 1061 青蛙的约会(扩展欧几里得) Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情...

dilan3700的博客 169

poj1061 青蛙的约会(扩展欧几里得)

http://poj.org/problem?id=1061 题意:中文题,求青蛙跳多少次才可以碰面,碰面即约会。 思路:数论第一题。根据题意很容易得出这个周期问题的条件:(x+mt)-(y+nt) = kl。其中t代表跳了多少次,k代表相差多少圈,这两个都是未知数。变形一下得到(n-m)t+lk = x-y,这就相当于解ax+by = c的式子了。其中a = n-m,b = l,

Iguodala的博客 403

POJ - 1061 青蛙的约会 解同余方程 扩展欧几里得

GDUT 2020寒假训练 数论 F 原题链接 F - 青蛙的约会 POJ - 1061 青蛙的约会 题目 Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得...

xcy2001的博客 273

poj1061青蛙的约会(扩展欧几里得)

题目链接: 啊哈哈,点我点我 这道题是扩展欧几里得问题。。。哎,数学太弱了,看了半天才看懂。。。。 如果要相遇的话,则(n-m)*T+p*c=x-y成立,那么进行代换得到a*x+b*y=c,那么就转换成小白上面讲的了,所以用扩展欧几里得算法求得一组解,那么最后得到解的通式为x=x0+k*b/gcd(a,b),那么直接另右式子等于0及可。。还有就是没有解的情况就是c%gcd(a,b)不等于

大洋深处 1594

poj 1061 青蛙的约会 扩展欧几里得

写在前面:关于扩展欧几里得 已知存在数x,y使得对于确定的a,b有ax+by=gcd(a,b),所以对于一般的ax+by=c,只要gcd(a,b)能够整除c,就一定存在解x,y,且解的个数为c/gcd(a,b)。 关于如何求x,y ax+by=gcd(a,b)=gcd(b,a%b)=bx'+(a%b)y',整理之后可以得到x=y',y=(x'-a/cy'),又因为gcd(d,0)(d为gcd

ctrss的博客 446

扩展欧几里得算法C语言实现+例题:青蛙的约会

扩展欧几里得算法 同余方程 ax≡1(mod p) -&amp;amp;amp;gt;ax+b*y=1 联系例题 “青蛙的约会” #include&amp;amp;amp;lt;stdio.h&amp;amp;amp;gt; int exgcd(int a,int b,int *x,int *y) //*x *y 通过地址修改参数值 { if(b==0) { *x=1;*y==0; return a; } else { int

ZangWhe 2390

[数论]POJ 1061 青蛙的约会 扩展欧几里得算法

传送门:青蛙的约会 青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 85205   Accepted: 14921 Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上

jjaw2013 1010
上一篇: 扩展欧几里得2(详解)
下一篇: A/B(HDU1576)(扩展欧几里得)
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值