笔记--扩展欧几里得算法

AcWing.877.欧几里得算法
给定 n n n 对正整数 a a ai, b b bi,对于每对数,求出一组 x x xi, y y yi,使其满足 a a ai × x ×x ×xi + b +b +bi × y ×y ×yi = g c d ( a =gcd(a =gcd(ai , b ,b ,bi ) ) )

输入格式
第一行包含整数 n n n

接下来 n n n 行,每行包含两个整数 a a ai, b b bi

输出格式
输出共 n n n 行,对于每组 a a ai, b b bi,求出一组满足条件的 x x xi, y y yi,每组结果占一行。

本题答案不唯一,输出任意满足条件的 x x xi, y y yi 均可。

数据范围
1 ≤ n ≤ 105 , 1 ≤ a 1≤n≤105,1≤a 1n105,1ai, b b bi ≤ 2 × 109 ≤2×109 2×109

输入样例:

4 6
8 18

输出样例:

-2 1
#include<iostream>
using namespace std;int exgcd(int a, int b, int &x, int &y) {if (!b) {x = 1,y = 0;return a;}int d = exgcd(b, a % b, y, x);y -= a / b * x;;return d;
}int main() {int n; cin >> n;while (n--) {int a, b, x, y; cin >> a >> b;exgcd(a, b, x, y);cout << x << ' ' << y << endl;}return 0;
}

应用:

AcWing.878.线性同余方程
给定 n n n 组数据 a a ai, b b bi, m m mi,对于每组数求出一个 x x xi,使其满足 a a ai × x ×x ×xi ≡ b ≡b bi ( m o d m i ) (modmi) (modmi),如果无解则输出 i m p o s s i b l e impossible impossible

输入格式
第一行包含整数 n n n

接下来 n n n 行,每行包含一组数据 a a ai, b b bi, m m mi

输出格式
输出共 n n n 行,每组数据输出一个整数表示一个满足条件的 x x xi,如果无解则输出 i m p o s s i b l e impossible impossible

每组数据结果占一行,结果可能不唯一,输出任意一个满足条件的结果均可。

输出答案必须在 i n t int int 范围之内。

数据范围
1 ≤ n ≤ 105 , 1 ≤ a 1≤n≤105,1≤a 1n105,1ai, b b bi , m ,m ,mi ≤ 2 × 10 ≤2×10 2×109

输入样例:

2 3 6
4 3 5

输出样例:

-3

如果 a x ≡ b ( m o d m ) ax ≡ b (mod m) axb(modm),那么就有 a x = m y + b ax = my + b ax=my+b,则存在 a x + m y = b ax + my = b ax+my=b,则我们需要存在这样的 x x x m m m,则只要 b b b能够整除 a a a m m m的最大公约数,就有解

#include<iostream>
using namespace std;int exgcd(int a, int b, int& x, int& y) {if (!b) {x = 1, y = 0;return a;}int d = exgcd(b, a % b, y, x);y -= a / b * x;return d;
}int main() {int n; cin >> n;while (n--) {int a, b, m;cin >> a >> b >> m;int x, y;int d = exgcd(a, m, x, y);if (b % d) cout << "impossible" << endl;else printf("%d\n",(long long)x*(b/d)%m);}return 0;
}

即如果可以推得需要求出一组 x x xi, y y yi,使其满足 a a ai × x ×x ×xi + b +b +bi × y ×y ×yi = g c d ( a =gcd(a =gcd(ai , b ,b ,bi ) ) )的时候,我们就可以使用扩展欧几里得算法。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Spring框架】@Cacheable注解:缓存最佳实践

在Java开发中&#xff0c;性能优化是一个永恒的话题。对于使用Spring框架的应用程序来说&#xff0c;Cacheable 注解提供了一种简单有效的方式来提升性能&#xff0c;特别是对于那些计算成本高或数据变化不频繁的操作。本文将深入探讨 Cacheable 的使用方法和注意事项&#xff…

在Vue 3中,理解使用defineEmits函数来定义组件的事件。

在Vue 3中&#xff0c;可以使用defineEmits函数来定义组件的事件。defineEmits函数接受一个对象作为参数&#xff0c;该对象的键是事件名&#xff0c;值是一个回调函数或一个函数数组。这些回调函数将被组件中的$emit方法触发。 以下是一个示例&#xff1a; import { defineC…

C#使用OpenCvSharp4库中5个基础函数-灰度化、高斯模糊、Canny边缘检测、膨胀、腐蚀

C#使用OpenCvSharp4库中5个基础函数-灰度化、高斯模糊、Canny边缘检测、膨胀、腐蚀 使用OpenCV可以对彩色原始图像进行基本的处理&#xff0c;涉及到5个常用的处理&#xff1a; 灰度化 模糊处理 Canny边缘检测 膨胀 腐蚀 1、测试图像lena.jpg 本例中我们采用数字图像处…

Java玩转《啊哈算法》解密QQ号之队列

行有不得&#xff0c;反求诸己 文章目录 开头代码地址引子案例分析代码 队列封装升级演示 开头 各位好&#xff01;本人在看《啊哈算法》&#xff0c;写的确实不错。 但略微遗憾的是&#xff0c;书籍示例代码是c语言&#xff0c;不是本人常用的Java。 那就弥补遗憾&#xff…

【C语言】va_list(可变参数处理)

C 语言中的 va_list 类型允许函数接受可变数量的参数&#xff0c;这在编写需要处理不定数量参数的函数时非常有用。va_list 类型是在 stdarg.h 头文件中定义的&#xff0c;它允许函数处理可变数量的参数。下面我们将详细介绍 va_list 的用法以及实际应用示例。 一、va_list的用…

【力扣刷题练习】415. 字符串相加

题目描述&#xff1a; 给定两个字符串形式的非负整数 num1 和num2 &#xff0c;计算它们的和并同样以字符串形式返回。 你不能使用任何內建的用于处理大整数的库&#xff08;比如 BigInteger&#xff09;&#xff0c; 也不能直接将输入的字符串转换为整数形式。 题目解答&am…

分布式搜索引擎_学习笔记_3

分布式搜索引擎03 0.学习目标 1.数据聚合 **聚合&#xff08;aggregations&#xff09;**可以让我们极其方便的实现对数据的统计、分析、运算。例如&#xff1a; 什么品牌的手机最受欢迎&#xff1f;这些手机的平均价格、最高价格、最低价格&#xff1f;这些手机每月的销售…

Postgresql使用update

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 解决问题一、关联表更新1.关联一张表2.关联多张表 二、根据状态更新为不同的值 解决问题 通过多张关联表更新主表的字段&#xff0c;根据状态更新为不同的值。 一、…

2670--------找出不同元素数目差数组

题目&#xff1a; 给你一个下标从 0 开始的数组 nums &#xff0c;数组长度为 n 。 nums 的 不同元素数目差 数组可以用一个长度为 n 的数组 diff 表示&#xff0c;其中 diff[i] 等于前缀 nums[0, ..., i] 中不同元素的数目 减去 后缀 nums[i 1, ..., n - 1] 中不同元素的数…

matlab中的图窗属性和坐标轴的属性

图窗的Position和Outerposition Position 指定窗口的尺寸和窗口在屏幕中的位置。 Outerposition 指定窗口外轮廓的大小和位置。 两者都是用一个4维向量来定义&#xff0c;格式为[左 底 宽 高]。 可通过set函数修改Position和Outerposition&#xff0c;如下&#xff1a;在屏幕左…

跨平台销售策略:通过API同步不同市场的商品数据

在数字化时代&#xff0c;零售商和品牌经常需要在不同的在线市场上展示和销售商品。为了保持竞争力并确保一致的客户体验&#xff0c;商家必须确保其商品信息在所有渠道上保持同步和准确。这种需求催生了跨平台销售策略&#xff0c;其中一个关键组成部分就是利用应用程序编程接…

spice-gtk注册glib错误信息

首先生成spice统一的错误域 #define SPICE_CLIENT_ERROR spice_client_error_quark()GQuark spice_client_error_quark(void) {return g_quark_from_static_string("spice-client-error-quark"); } 方法1&#xff1a;通过g_set_error()函数 g_set_error(err, SPICE_C…

color - 让你的输出带点颜色

color color 是一个可以让你输出带颜色文本的库。 安装 go get github.com/fatih/color示例 输出到控制台 // 这会直接输出到控制台 color.Cyan("Prints text in cyan.")// 每个调用末尾会自动加上换行 color.Blue("Prints %s in blue.", "text&…

VMware vCenter告警:vSphere UI运行状况警报

vSphere UI运行状况警报 不会详细显示告警的具体内容&#xff0c;需要我们自己进一步确认告警原因。 vSphere UI运行状况警报是一种监控工具&#xff0c;用于检测vSphere环境中的潜在问题。当警报触发时&#xff0c;通常表示系统遇到了影响性能或可用性的问题。解决vSphere UI…

软件测试之软件缺陷管理

什么是软件缺陷 标准的定义&#xff1a;从产品内部看&#xff0c;缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题&#xff1b;从产品外部看&#xff0c;缺陷是系统所需要实现的某种功能的失效或违背 软件缺陷的生命周期 一个缺陷的正常生命周期是 新建&#xff…

【Java】Java的对象参数踩坑总结

文章目录 前言失败的修改成功的修改原理分析基本类型参数对象引用参数 举一反三&#xff1a;不修改对象参数怎么写&#xff1f; 前言 今天写代码的时候&#xff0c;犯了一个很基础很低级的错误。实在惭愧&#xff0c;在此花点顺手记录一下&#xff0c;养成习惯。 需求是需要把…

如何分辨坏信息?

每当有社会热点&#xff0c;大家也许都会遇到一个困扰&#xff1a; 铺天盖地的信息&#xff0c;实在是太多了。究竟哪一些值得信任&#xff0c;哪些不值得信任&#xff1f;哪些可以接受&#xff0c;哪些最好保持怀疑&#xff1f; 我想用这篇文章&#xff0c;彻底把这个问题讲清…

CSS定位

定位的组成&#xff1a; 这个属性只有当position属性设置为absolute、fixed、relative时才有效。而且在position属性取值不同时&#xff0c;它们的含义也不同。left和right属性值除了可以设置为绝对的像素数外&#xff0c;还可以设置百分数。 定位模式&#xff1a; 静态定位st…

易语言系列学习1

通过本文章你会学习到 如果 如果真 获取编辑框内容 关闭本程序 监听按键让它等价于点击某个按钮 运算&#xff1a;或 且 非&#xff08;注意中间要有一个空格&#xff0c;否则会报错&#xff09; 效果 .版本 2.程序集 窗口程序集_启动窗口.子程序 _按钮2_被单击. 如果真 (编…

QT生成二维码

文章目录 1.基于第三方库libqrencode,Qt本地生成二维码1.1.效果图1.2.QR码简介1.3.第三方库libqrencode下载1.4.在自己的项目中使用,这里提供一个例子1.4.1.新建一个工程1.4.2.加入第三方库libqrencode1.4.3.qrencode.pri1.4.4.使用1.4.5.centos7下编译运行1.4.6.Windows下编译…