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

【代码超详解】POJ 1061 青蛙的约会(扩展欧几里得算法,0 ms) 一、题目描述 二、算法分析说明与代码编写指导 三、AC 代码(0 ms) #include<cstdio> #pragma warning(disable:4996) //Solve ax + by = GCD(a, b) for x, y. template<class _Ty> _Ty extgcd(const _Ty& a, const _Ty& ... 阅读详情

写在前面:关于扩展欧几里得

已知存在数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(a,b))=dx,所以可以用递归求解满足条件的x,y


代码如下

void exgcd(long long a,long long b,long long &d,long long &x,long long &y)
{
	if(b==0)
	{
		d=a;
		x=1;
		y=0;
	    return;
	}
	else
	{
		exgcd(b,a%b,d,x,y);
		long long temp=x;
		x=y;
		y=temp-(a/b)*y;
	}
}


之后,将等式两边同乘以c/gcd(a,b),得到一般方程ax+by=c的一个解x,y。

因为ax+by=c可以写成同余形式 ax=c(mod b)

所以可以累加(b/gcd)得到所有的x



青蛙的约会
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 103521 Accepted: 20132

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


推出公式之后可以发现,这就是一个简单的ax+by=c类问题,套模板即可


#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
long long i,j,k,n,m,x1,l,a,b,c,d,x,y,sum;
long long y1;

void exgcd(long long a,long long b,long long &d,long long &x,long long &y)
{
	if(b==0)
	{
		d=a;
		x=1;
		y=0;
	    return;
	}
	else
	{
		exgcd(b,a%b,d,x,y);
		long long temp=x;
		x=y;
		y=temp-(a/b)*y;
	}
}

int main()
{   
	while(~scanf("%lld%lld%lld%lld%lld",&x1,&y1,&m,&n,&l))
	{
		if(m==n)
		{
			printf("Impossible\n");
			continue;
		}
		
		a=n-m;
		b=l;
		c=x1-y1;
		exgcd(a,b,d,x,y);
		//printf("%lld  %lld\n",d,x);
		if((x1-y1)%d!=0)
		{
			printf("Impossible\n");
			continue;
		}
		else
		{   
			 sum=(x*c/d)%(l/d);
			sum=(sum+l/d)%(l/d);  //此处sum可能是负数,要处理一下 
		}
		
      printf("%lld\n",sum);    
	}
	return 0;
}



(ctr的自我吐槽:一开始一直输出0,怎么都找不到错误,最后发现我的sum在循环里重新定义了一遍……人工增加debug难度……果然人已经傻到一定境界了)




以POJ1061青蛙的约会为例谈扩展欧几里得算法 以POJ1068青蛙的约会为例谈扩展欧几里得算法 阅读详情

相关推荐

STM32H5 USB虚拟串口:用Classic驱动移植CDC实践

USB虚拟串口(CDC)是嵌入式系统最常用的主机通信方式之一,本质是借助USB协议模拟串口收发,无需额外驱动即可在PC上生成COM口。其实现依赖USB设备协议栈完成枚举、控制传输与批量传输。传统USBD Classic库不依赖RTOS,代码轻量、调用链短,非常适合裸机或轻量状态机架构;而USBX功能强大但需要ThreadX内核,资源开销较大。在电机控制器、传感器采集等场景中,日志输出与参数配置仅需简单的双向数据通道,Classic驱动往往更务实。本文基于STM32H5平台,详细梳理了使用Classic驱动移

weixin_29178069的博客 333

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

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

DJR228的专栏 733

Kafka延迟队列实现方案全解析

$ \text{时间轮} = \text{环形数组} + \text{分层设计} $$需要补充代码实例或特定场景的优化方案可进一步细化,此大纲已覆盖核心技术路径。

lz989796的博客 816

扩展欧几里得原理的应用:POJ1061青蛙的约会

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

as3399639的博客 207

谈谈SAP顾问的几个发展趋势

大家新年好,今天想聊一下对SAP顾问发展趋势的一些个人见解。过去10多年得益于我国的经济发展,外资不断加大在中国的投资和中国企业的发展,SAP顾问行业得到了很大的发展和壮大。那么未来几年SAP顾问的职业发展到底怎么样呢?

syounger的专栏 2510

YOLO26改进 - SPPF模块 | 发论文神器!LSKA注意力改进SPPF,增强多尺度特征提取能力,高效涨点!!!

本文介绍了Large Separable Kernel Attention (LSKA)模块及其在YOLO26中的结合应用。LSKA旨在解决Visual Attention Networks (VAN)使用大内核卷积时的计算效率问题,通过将2D深度卷积层的卷积核分解为级联的水平和垂直1-D卷积核,降低了计算复杂度和内存占用,且使VAN更关注物体形状。我们将集成LSKA的SPPF_LSKA模块引入YOLO26,大量实验表明,改进后的模型在对象识别、检测、分割和稳健性测试上表现出色。

魔改工程师的博客 252

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

题意很简单,很早就想做的题目,但一直由于对数论的恐惧

Hatsune__Miku 567

【VTKExamples::Meshes】第十二期 QuadricDecimation

本文分享VTK样例QuadricDecimation,并解析接口vtkQuadricDecimation,希望对各位小伙伴有所帮助!

qq_40041064的博客 342

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

被稍微坑了一下下,本质上还是水题

巴达鸟巴达鸟 555

YOLOv10有效涨点专栏目录 | 包含卷积、主干、检测头、注意力机制、Neck、二次创新、独家创新等上百种创新机制

Hello,各位读者们好本专栏自开设以来已经更新改进教程100余篇其中包含二次创新、独家创新多种改进方法,包含C2f、主干、检测头、注意力机制、Neck多种结构,也有损失函数和一些细节点上的创新。同时本人一些讲解视频和包含我所有创新的YOLOv10文档并不能在优快云上传,通过建立交流群的形式在内上传我完整的文件和视频我也会在群内不定期和大家交流回答大家问题。专栏介绍。

Snu77的博客 1万+

AMS TMF8820/21/28 SPAD 掩码和模式选择

为了实现最快的测距周期,将报告周期设置在测距周期以下的毫秒,以确保不会有等待时间。除了8X8固定了pixel的位置意外,其他模式客户可以设计自己的spad掩码,并将spad单独分配给通道。对于这些spad掩码,有一些约束。左下角提示红色代表光学中心,绿色方框表示单个spad,每个MP里可能有2X3个spad,也有2X5个spad,也有3X6+3个spad,这部分适配光学,最大的程度的利用spad区域。以下是几种预定义的spad掩码,非常灵活的配置,来适配各种3X3,4X4,8X8的模式选择。

dream it possible 700

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

题目链接:http://poj.org/problem?id=1061 大概推导一下可以得出一个同余数的方程 (x - y) + (m - n) * k = L * s, 即左边是L的倍数 然后移项可以得到 (n - m)*k + L * s = x - y, 也就是a * x + b * y = c(x y是未知数) 之后就可以使用扩展欧几里得算法计算出x,进而得到答案。 需要...

weixin_30287169的博客 94

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【POJ 1061】青蛙的约会(扩展欧几里得)

【POJ 1061】青蛙的约会(扩展欧几里得) Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 103473   Accepted: 20116 Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条

ACMer' 4203

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

计算机控制技术及应用

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

POJ 1061.青蛙的约会-扩展欧几里得

扩展欧几里得算法 是欧几里得算法(又叫辗转相除法)的扩展。除了计算a、b两个整数的最大公约数,此算法还能找到整数x、y(其中一个很可能是负数)。通常谈到最大公因子, 我们都会提到一个非常基本的事实: 给予二整数 a 与 b, 必存在有整数 x 与 y 使得ax + by = gcd(a,b)。有两个数a,b,对它们进行辗转相除法,可得它们的最大公约数——这是众所周知的。然后,收集辗转相除法中产生...

weixin_30263277的博客 75

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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

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

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

青蛙的约会 Time limit 1000 ms Memory limit 10000 kB Problem Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝...

mind_jia 248

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

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

世界很大 709

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

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

DouglasConnor的博客 197

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

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

Triumphs的博客 559

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

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

停不下的脚步 748

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

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

独钓门前月 494
上一篇: hdu 2112HDU Today 最短路+map
下一篇: poj 3070 矩阵快速幂求斐波拉契数列
ctrss
博客等级 码龄11年 1粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值