P1516 青蛙的约会(exgcd以及相关结论)

非常好的题,适合入门拓展欧几里得算法以及相关结论。

结论

ax + by = gcd(a,b) = gcd(b,a%b) = bx + (a - \left \lfloor \frac{a}{b} \right \rfloor \times b) y = ay + b(x-\left \lfloor \frac{a}{b} \right \rfloor )

由此递归求解即可。

int exgcd(int a,int b,int &x,int &y){//	求解 ax + by = gcd(a,b)if(!b){x = 1,y = 0;return a;}int g = exgcd(b,a%b,x,y);int temp = x;x = y;y = temp-a/b*y;return g;
}

求解ax + by = c 的特解

先求解 gcd(a,b) 若 c/gcd(a,b) 不是整数 则说明无解。

证明:因为 (ax + by)/g 一定是整数 所以 c/gcd(a,b) 也要是整数。

易证:求出 ak+bl = gcd(a,b)后,令w = c/gcd(a,b),x = w*k,y = w*l。

bool liEu(int a,int b,int &x,int &y,int c){//求解ax + by = cint g = exgcd(a,b,x,y);if(c % g != 0)return 0;//无解int k = c/g;x*=k;y*=k;return 1;
}

最小非负整数解

有恒等式 a(x0 + k*d*b ) + b(y0 - k*d*a)。

x = x0 + db,最小的划分度,为d = 1/gcd(a,b)。

令 t = b/gcd(a,b);

则x最小值 = x0 - k*t > 0 满足取模的定义,故 min = x0 mod t,为了防一手x0是负数,所以

最小值是 (x0 mod t + t) mod t

解题思路

(m-n)x + la = x-y (mod l)

a = (m-n)

b = l

c = x-y

细节:防一手m - n < 0 则令 a = -a ,c = -c。b不用管 ,由整除性可得。

。故求解ax + by = c中x的最小整除解即可。

AC 代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
int exgcd(int a,int b,int &x,int &y){//	求解 ax + by = gcd(a,b)if(!b){x = 1,y = 0;return a;}int g = exgcd(b,a%b,x,y);int temp = x;x = y;y = temp-a/b*y;return g;
}
bool liEu(int a,int b,int &x,int &y,int c){//求解ax + by = cint g = exgcd(a,b,x,y);if(c % g != 0)return 0;//无解int k = c/g;x*=k;y*=k;return 1;
}
signed main(){int x,y,n,m,l;cin>>x>>y>>m>>n>>l;int a = n-m;int b = l;int xx,yy;int c = x-y;if(a < 0){c = -c,a = -a;}if(liEu(a,b,xx,yy,c)){int t = b/__gcd(a,b);cout<<(xx%t + t)%t;}else{puts("Impossible");	}return 0;
}

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/146852.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

NLP 序列标注任务核心梳理

句向量标注 用 bert 生成句向量用 lstm 或 bert 承接 bert 的输出&#xff0c;保证模型可以学习到内容的连续性。此时 lstm 输入形状为&#xff1a; pooled_output.unsqueeze(0) (1, num_sentence, vector_size) 应用场景 词性标注句法分析 文本加标点 相当于粗粒度的分词任…

8590 队列的应用——银行客户平均等待时间

### 思路 1. **初始化队列**&#xff1a;使用InitQueue函数初始化一个队列&#xff0c;用于存储客户的到达时刻和办理时间。 2. **读取输入**&#xff1a;读取客户总人数和每个客户的到达时刻及办理时间。 3. **模拟业务办理**&#xff1a; - 维护一个当前时间变量currentTi…

【路径规划】 红嘴蓝鹊优化器:一种用于2D/3D无人机路径规划和工程设计问题的新型元启发式算法

摘要 本文提出了一种新型元启发式算法——红嘴蓝鹊优化器&#xff08;RBMO&#xff09;&#xff0c;用于解决2D和3D无人机路径规划以及复杂工程设计问题。RBMO灵感来源于红嘴蓝鹊的群体合作行为&#xff0c;包括搜索、追逐、捕猎和食物储藏。该算法通过模拟这些行为&#xff0…

模板:JDBC 连接数据库并实现 CRUD

目录 前期准备&#xff1a; 1. 连接数据库 1.1 第一种 1.2 第二种 2. 增加 3. 修改 4. 删除 5. 查询 5.1 查询某个记录 5.2 查询单列数据 使用时&#xff0c;直接复制再修改一些数据即可&#xff1b; 声明&#xff1a;在对文件/变量命名时&#xff0c;没有做到见名知…

CompletableFuture如何优雅处理异步任务超时!妙就完了

文章目录 1. 主要解决哪些业务痛点&#xff1f;2. 流程分析3. 上代码4. 总结一波 1. 主要解决哪些业务痛点&#xff1f; 小强最近一直没打黑神话悟空&#xff0c;闷闷不乐的&#xff0c;我问咋回事&#xff0c;最近有啥烦心事么? 他不爽的跟我说了当他CompletableFuture进行…

css基础知识笔记

一言&#xff1a; “放任误解就是撒谎。” 文章目录 前言文章有误敬请斧正 不胜感恩&#xff01;CSS基础教程0.文本样式基础1. CSS选择器2. CSS布局技巧3. 响应式设计4. Emmet语法 总结 前言 写在开始&#xff1a; 今天来看一眼CSS基础知识。 好几天没更新了 先更一篇 文章有…

华为OD机试 - 需要打开多少监控器(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

2024年最新网络协议分析器Wireshark抓包详细教程(更新中)

网络协议分析器 Wireshark 安装 Wireshark 是一个功能强大的网络协议分析器&#xff0c;早期叫作 Ethereal。它主要用于捕获网络数据包&#xff0c;并对这些数据包进行详细的解析和分析&#xff0c;帮助用户深入了解网络通信的细节。它支持多种网络协议&#xff0c;并提供详细…

银河麒麟桌面操作系统如何添加WPS字体

银河麒麟桌面操作系统如何添加WPS字体 1、使用场景2、操作方法步骤一&#xff1a;下载字体文件步骤二&#xff1a;打开终端步骤三&#xff1a;进入字体文件所在目录步骤四&#xff1a;拷贝字体文件到WPS字体目录步骤五&#xff1a;更新字体缓存步骤六&#xff1a;重启WPS Offic…

uni-app-通过vue-cli命令行快速上手

环境安装 全局安装 vue-cli npm install -g vue/cli创建uni-app 使用正式版&#xff08;对应HBuilderX最新正式版&#xff09; vue create -p dcloudio/uni-preset-vue my-project使用alpha版&#xff08;对应HBuilderX最新alpha版&#xff09; vue create -p dcloudio/uni-p…

Linux常用命令;Linux常用软件;Linux权限

一&#xff0c;常用命令 是人向计算机发送指令的语言。 命令的格式&#xff1a; 命令 [选项] [参数] 1、ls 展示当前目录下文件的命令 1、-l 展示详细信息。还有另外一种写法&#xff1a;ll&#xff08;字母 LL 小写&#xff09; 2、-S 按照文件大小倒序展示 3、-t…

1952. 三除数

目录 一&#xff1a;题目&#xff1a; 二&#xff1a;代码&#xff1a; 三&#xff1a;结果&#xff1a; 一&#xff1a;题目&#xff1a; 给你一个整数 n 。如果 n 恰好有三个正除数 &#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 如果存在整数 k &a…

【软件测试】性能测试-概念篇

目录 &#x1f334;什么是性能测试 &#x1f333;常见性能测试指标 &#x1f6a9;并发数 &#x1f6a9;吞吐量 &#x1f6a9;吞吐量分类 &#x1f3c0;按照请求分类:TPS和QTS &#x1f3c0;按照网络数据包划分:KB &#x1f6a9;响应时间 &#x1f6a9;资源利用率 &am…

SpringBoot启动流程之运行时监听器

SpringBoot启动过程&#xff1a; 上一节我们讨论SpringApplication实例化的过程&#xff0c;也就是上图1-5步骤&#xff0c;本节我们讨论6-9的关键步骤&#xff0c;现在主要讲是run方法里面的过程 /*** 启动方法* param args* return*/public ConfigurableApplicationContext …

基于JAVA+SpringBoot+Vue的景区民宿预约系统

基于JAVASpringBootVue的景区民宿预约系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码下载链接&#x1f345; 哈…

Mamba所需的causal-conv1d 和mamba-ssm库在哪下载?

背景介绍 参照 Mamba [state-spaces/mamba: Mamba SSM architecture (github.com)] github中提到的环境安装[Installation 一栏] [Option] pip install causal-conv1d>1.4.0: an efficient implementation of a simple causal Conv1d layer used inside the Mamba block.…

浙版传媒思迈特软件大数据分析管理平台建设项目正式启动

近日&#xff0c;思迈特软件与出版发行及电商书城领域的领军企业——浙江出版传媒股份有限公司&#xff0c;正式启动大近日&#xff0c;思迈特软件与出版发行及电商书城领域的领军企业——浙江出版传媒股份有限公司&#xff0c;正式启动大数据分析管理平台建设项目。浙版传媒相…

华为HarmonyOS灵活高效的消息推送服务(Push Kit) - 2 开通推送服务与配置Client ID

在开通推送服务前&#xff0c;请先参考“应用开发准备”完成基本准备工作&#xff0c;再继续进行以下开发活动。 说明 从HarmonyOS NEXT Developer Beta2起&#xff0c;开发者无需配置公钥指纹和Client ID。 操作步骤 登录AppGallery Connect网站&#xff0c;选择“我的项目…

UML图中部署图例题

答案&#xff1a;B 知识点&#xff1a; 组件图 一组构件之间的组织和依赖&#xff0c;专注于系统的静态实现视图 部署图 运行处理结点以及构件的配置&#xff0c;给出体系结构的静态视图 类图 一组对象&#xff0c;接口&#xff0c;协作和它们之间的关系 UML图中涉及到…

ALTIUM DESIGNER PCB设计中关闭和打开捕捉热点(hot spot)功能

ALTIUM DESIGNER PCB设计中关闭和打开捕捉热点&#xff08;snap to hot spot&#xff09;功能 在采用ALTIUM DESIGNER 18 进行PCB元器件布局时&#xff0c;我喜欢将元器件放置在栅格&#xff08;grid&#xff09;上&#xff0c;这样元器件的位置比较规整。但在设置完栅格后&am…