【洛谷P1082】同余方程【扩欧】

题解:洛谷 P1082 [NOIP 2012 提高组] 同余方程 等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。输入数据保证一定有解。#普及+# #扩展欧几里得算法#本文分享的必刷题目是从。 阅读详情

题目大意:

题目链接:https://www.luogu.org/problem/P1082
求关于 x x x的同余方程 a x ≡ 1 ( m o d b ) ax \equiv 1 \pmod {b} ax≡1(modb)的最小正整数解。


思路:

数论是真的差,现在才来补 q w q qwq qwq。
我先把原式改写为等式的形式。
a x ≡ 1 ( m o d b ) ax \equiv 1 \pmod {b} ax≡1(modb)
a x − b y = 1 ax-by=1 ax−by=1
然后设 x ′ y ′ x'y' x′y′为方程 b x ′ − ( a m o d    b ) y ′ = 1 bx'-(a\mod b)y'=1 bx′−(amodb)y′=1的一组解。
即为 b x ′ − y ′ ( a − ⌊ a b ⌋ ) bx'-y'(a-\lfloor\frac{a}{b}\rfloor) bx′−y′(a−⌊ba​⌋)的一组解。
统一格式为
a y ′ − b ( x ′ − y ′ a b ) ay'-b(x'-\frac{y'a}{b}) ay′−b(x′−by′a​)
那么代入 x = y , y = x ′ − y ′ a b x=y,y=x'-\frac{y'a}{b} x=y,y=x′−by′a​即可。
因为 g c d ( x , 0 ) = x gcd(x,0)=x gcd(x,0)=x,当 b = 0 b=0 b=0时,必然有 a = 1 a=1 a=1。此时该方程的解为 x = 1 , y = 0 x=1,y=0 x=1,y=0。
然后往上回溯求解即可。
最终我们可以得到该方程的一组解 ( x , y ) (x,y) (x,y),由于要求 x x x尽量小且大于0,我们发现为了满足 a x + b y = 1 ax+by=1 ax+by=1, Δ a x \Delta ax Δax必然等于 Δ b y \Delta by Δby,那么同时要满足 x , y x,y x,y均为整数,所以需要找到一组合法的 ( x ′ , y ′ ) (x',y') (x′,y′)使得 a ( x ± x ′ ) = b ( y ± y ′ ) a(x±x')=b(y±y') a(x±x′)=b(y±y′)。
所以 Δ a x \Delta ax Δax和 Δ b y \Delta by Δby最小等于 l c m ( a , b ) lcm(a,b) lcm(a,b)。所以 Δ x \Delta x Δx每次最小为 b l c m ( a , b ) \frac{b}{lcm(a,b)} lcm(a,b)b​。
那么就让 x x x不停加减 b l c m ( a , b ) \frac{b}{lcm(a,b)} lcm(a,b)b​,知道 x x x为最小的正整数解为止。其实不断加减就是进行一次取模运算即可。


代码:

#include <cstdio>
#include <algorithm>
#define mp make_pair
#define st first
#define nd second
using namespace std;

int a,b;

pair<int,int> exgcd(int a,int b)
{
	if (b)
	{
		pair<int,int> x=exgcd(b,a%b);
		return mp(x.nd,x.st-x.nd*(a/b));
	}
	return mp(1,0);
}

int main()
{
	scanf("%d%d",&a,&b);
	int x=exgcd(a,b).first,y=b/__gcd(a,b);
	printf("%d",(x%y+y)%y);
	return 0;
} 
网络攻防技术——MD5碰撞试验 一、题目 本次实验主要是加深大家对MD5碰撞及其原理的理解,使用SEED实验环境中的工具及编程语言,完成以下任务: a)使用md5collgen生成两个MD5值相同的文件,并利用bless十六进制编辑器查看输出的两个文件,描述你观察到的情况; b)参考Lab3_task2.c的代码,生成两个MD5值相同但输出不同的两个可执行文件。 c)参考Lab3_task3.c的代码,生成两个MD5值相同但代码行为不相同的可执行文件。 d)回答问题:通过上面的实验,请解释为什么可以做到不同行为的两个可执行文件具有相同的M 阅读详情

相关推荐

避开这些坑!用Python ReportLab生成PDF时字体处理与中文排版的5个关键技巧

本文针对Python ReportLab库在PDF自动化生成中常见的中文排版难题,提供了五个关键技巧。内容涵盖字体注册的稳健策略、段落样式的精细控制、表格内中文的换行对齐、页面布局管理以及性能优化,旨在帮助开发者彻底解决中文乱码、排版错位等问题,生成专业美观的PDF文档。

weixin_29250403的博客 624

同余方程

求关于 x 的同余方程 ax ≡1(modb)的最小正整数解。 输入格式 输入只有一行,包含两个正整数 a,b,用一个空格隔开。 输出格式 输出只有一行,包含一个正整数 x0,即最小正整数解。输入数据保证一定有解。 数据范围 对于 40% 的数据,2≤b≤1,000; 对于 60% 的数据,2≤b≤50,000,000; 对于 100% 的数据,2≤a,b≤2,000,000,000。 Sample Input 3 10 Sample Output 7 ------------

qq_51201142的博客 605

Linux内存优化:KSM技术原理与实践指南

内存共享是提升虚拟化环境资源利用率的关键技术,其核心原理是通过识别相同内容的内存页进行合并。Linux内核的KSM(Kernel Samepage Merging)机制采用红黑树数据结构管理内存页,通过多级哈希比较算法实现高效合并。该技术能显著降低物理内存消耗,提升CPU缓存命中率,特别适用于运行大量相似虚拟机实例的场景。在容器化和云计算环境中,KSM与NUMA优化、内存气球等技术协同,可实现40%-60%的内存节省。典型应用包括金融云平台的高密度虚拟机部署,以及Kubernetes集群的基础镜像优化。

weixin_28730353的博客 369

基础数学问题3(洛谷)

题目描述 灵梦当前拥有的樱点可以使用一个变量cc存储,初始时为00。当樱点在某个瞬间恰好变为了kk,灵梦就会展开樱之结界,同时cc变为00。 现在她把路程依次划分为了nn个关卡,其中第ii关上,灵梦一共可以获得a_iai​点樱点。这些樱点是均匀分布在这关的路程上的。也就是说,随着这段路程的进行,灵梦的樱点个数会依次增加,每次增加11个单位(c\gets c+1c←c+1),恰好在这段路程结束的瞬间会收集到这关中第a_iai​点樱点。 在这个例子里,灵梦将路径划分为......

qq_54809548的博客 6180

嵌入式SPI总线抽象设计:跨平台驱动与分层解耦实践

SPI(串行外设接口)是嵌入式系统中应用最广泛的同步串行通信协议,其核心价值在于高吞吐、低开销与硬件简洁性。其工作原理基于主从架构、全双工/半双工时序及片选(CS)控制,依赖CPOL/CPHA组合定义四种标准模式。在工程实践中,SPI常面临硬件资源受限、多外设共用总线、MCU平台迁移等挑战,导致驱动复用率低、维护成本高。通过结构体+函数指针实现的分层抽象——将物理总线、协议适配与设备驱动解耦,可显著提升代码可移植性与扩展性。该方法天然支持硬件SPI与GPIO模拟SPI双模式切换,并已在STM32等主流MCU

weixin_42601134的博客 60

遥感图像小白--2--图像分割

遥感图像分割基础入门

Mary的博客 4234

EXGCD - NOIP 2012 同余方程 - AcWing 203

EXGCD - NOIP 2012 同余方程 - AcWing 203 求关于x的同余方程 ax ≡ 1(mod b) 的最小正整数解。 输入格式 输入只有一行,包含两个正整数a,b,用一个空格隔开。 输出格式 输出只有一行,包含一个正整数x,表示最小正整数解。 输入数据保证一定有解。 数据范围 2≤a,b≤2∗1092≤a,b≤2∗10^92≤a,b≤2∗109 输入样例: 3 10 输出样例: 7 ...

njuptACMcxk的博客 212

python模拟银行交易流水

模拟自动生成银行交易流水,其中包括:入账账号、出账账号、交易金额、交易余额、交易时间、出入表示关键字段

qq_31823889的博客 2910

同余方程(C语言)

题目描述 求关于 x 的同余方程 ax≡ 1( mod b)的最小正整数解。 输入描述 输入只有一行,包含两个正整数 a,b 。a,b,用一个空格隔开。 输出描述 输出只有一行,包含一个正整数 x,即最小正整数解。输入数据保证一定有解。 样例输入 3 10 样例输出 7 解题思路: ax≡ 1( mod b) 等价于 ax + b*y = 1 (y是b的倍数) 采用欧几里得算法求解x0,y0;...

shuati2000的博客 3131

MTK Camera HAL 与 FeaturePipe 架构解析:从硬件抽象到功能管线的工程落地路径

MTK 的 Camera 系统在 Android 平台下采用高度模块化的 HAL 与 FeaturePipe 架构组合,分别承担着底层硬件抽象与上层功能封装的职责。通过将 ISP、3A 算法、Sensor 驱动与图像处理节点解耦封装于功能链条中,联发科平台实现了灵活可控的影像能力调度机制。本文将基于真实项目实践,系统解析 MTK Camera HAL 与 FeaturePipe 架构的设计思路、核心模块与运行机制,结合 AE/AWB/AF 控制流、Buffer 管理策略、功能管线构建方法与多线程调度实现方式

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1570

uniapp:实现扫描二维码+自定义扫描框+扫一扫功能,支持扫码识别二维码、条形码(条码)、微信/支付宝等二维码功能,自定义扫码页面可添加按钮或文字展示布局(移动端H5网页/小程序/安卓苹果APP端)

UNI-APP实现扫描二维码,uniapp扫描条形码,uniapp实现扫一扫功能,扫码成功后跳转页面,uniApp扫描条码,uniApp-H5 使用摄像头扫码功能(扫一扫),实现手机扫描二维码并跳转全过程示例代码,用户扫码后自动跳转到链接,uniapp怎么调用扫一扫功能,uniapp实现扫一扫功能,uniapp请求相机使用权限,扫一扫权限申请,uniapp调用摄像头扫码,uniapp实现调用相机扫码,UniApp 实现扫描二维码,uniapp APP安卓苹果ios实现扫码扫一扫,Uniapp微信小程序扫描二

✅ 精选推荐文章 4708

【普及+/提高】洛谷P1082 ——[NOIP 2012 提高组] 同余方程

想进步的进来~

yuyu130225的博客 1229

HarmonyOS 鸿蒙开发DevEco Studio OpenHarmony:安全测试

通过对HarmonyOS应用生命周期建模和应用攻击面建模,采用静态数据流分析技术,提高漏洞发现的准确率,同时覆盖20余种攻击面,65+漏洞测试项,帮助开发者提前发现和识别漏洞隐患。在检测报告中,会针对每一项漏洞风险项给出明确的修复建议,可以帮助开发者快速修复漏洞。

斌擎科技 1181

扩欧讲解

$ $扩欧讲解 前记 $ $本蒟蒻的第二篇blog,之前学了扩欧却一直没时间写,现在趁着“山竹”台风,学校放假,写一下扩欧(qwq都忘得差不多了) 前提摘要 $ $ what is 扩欧? $ $扩欧及是扩展欧几里得,是欧几里得算法的扩展算法。 $ $欧几里得算法是蛤?就是小学学过的辗转相除法。用于计算两个...

weixin_30734435的博客 236

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

洛谷P1082 [NOIP 2012 提高组] 同余方程——线性同余方程

此题其实就是求ax=1+by,可以转换成ax+by=1的最小正整数解,而我们要求x的最小正整数解,就要套一个公式,Xmin=(x0 mod T+T) mod T,其中T=b/gcd(a,b)。设a,b为整,m为正整数,则把a和b模m同余记为a≡b(mod m),这个算式相当于a=b+my,其中y∈Z。求关于 x 的同余方程 ax≡1(modb) 的最小正整数解。一个整数 x0​,即最小正整数解。输入数据保证一定有解。一行,包含两个整数 a,b,用一个空格隔开。

zbh0604的博客 666

jre9下载 jdk9

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

洛谷P1082 同余方程

链接:[P1082](https://www.luogu.org/problem/P1082) 题目描述 求关于xx的同余方程 a x \equiv 1 \pmod {b}ax≡1(modb) 的最小正整数解。 输入格式 一行,包含两个正整数 a,ba,b,用一个空格隔开。 输出格式 一个正整数 x,即最小正整数解。输入数据保证一定有解。 输入输出样例 输入 #1 3 10 输出 #1 7 说明/...

秃头交易站. 1429

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【题解】洛谷P1082 [NOIP2012]同余方程(扩展欧几里得算法详解)

题目 洛谷P1082同余方程 题解 定义gcd(a,b)为a,b的最大公约数(Greatest Common Divisor)。 由欧几里得定理得: 特别地:gcd(a,0)=a 由裴蜀定理得: 扩展欧几里得算法:假设a*x+b*y=gcd(a,b) 1.b=0时,gcd(a,b)=a,解得x=1,y=0 2.b!=0时,假设 可等价变形为: 与方程a*x+b*y=gcd(a,b)比较得:x=y’,y=x’-(a/b)*y’,不断重复操作,递归改.

zjgmartin的博客 406

关于扩欧算法的一篇(很)水题解

水一篇题解 题目:洛谷 P1082 同余方程 (某提高组题目) 。。。 注释在代码里 如果点赞过10个 我就讲讲 a b 互质的原因 本题涉及欧几里得算法和扩展欧几里得算法 AC了 /* ax%b==c c=1 -> ax+by=c 注意 y常是负数 用exgcd 解不定方程: { r=gcd(a,b) c%r!=0 无整数解 c%r==0 : 将方程右边*r/c -> ax+by=r 求得一组整数解 x0 y0 (exgcd) } 解得 x1=x0*c/

SB_zero_mark的博客 251

c++数论:同余方程

洛谷P1082 谜之ac 前置知识:(a*x)%mod=((a%mod)*x)%mod #include <bits/stdc++.h> using namespace std; long long work(long long a,long long b)//求同余方程的函数 { if(a>b) a%=b;//一定要有,不然会一直运行这个 if(...

NEFU_kadia的博客 1833

洛谷 P1082:[NOIP 2012 提高组] 同余方程 ← 求逆元

裴蜀定理指出:若整数 a 和 b 互质(即 gcd(a,b)=1),则存在整数 x 和 y,使得 ax+by=1。此时,x 即为 a 模 b 的乘法逆元,即满足 ax≡1(mod b)。若解 x 为负数,通过 (x mod T + T) mod T 调整为最小正整数解,其中 T=b/gcd(a,b) 为解的周期。

hnjzsyjyj的专栏 808

P1082 同余方程—洛谷——算法笔记

题目描述 求关于x xx的同余方程 ax≡1(modb) a x \equiv 1 \pmod {b}ax≡1(modb) 的最小正整数解。 输入输出格式 输入格式: 一行,包含两个正整数 a,ba,ba,b,用一个空格隔开。 输出格式: 一个正整数 x0x_0x0​,即最小正整数解。输入数据保证一定有解。 输入输出样例 输入样例#1: 复制 3 10 输出样例#1: 复制 7 说...

学而不思则忘 1119

题254.洛谷P1082 扩展欧几里得算法-[NOIP2012 提高组] 同余方程

文章目录题254.洛谷P1082 扩展欧几里得算法-[NOIP2012 提高组] 同余方程一、关于线性同余方程的求解综述二、题目三、题解 题254.洛谷P1082 扩展欧几里得算法-[NOIP2012 提高组] 同余方程 一、关于线性同余方程的求解综述 1.对线性同余方程的解释 ax ≡ c (mod b)表示关于x的解集,其中x需满足(a*x)%b=c。求解该问题等价于求解方程ax+by=c,其中只要x的集合能够被求出,那么y的集合也可以通过x求出。 2.求解线性同余方程的方法:扩展欧几里得算法

Adongua的博客 691

P1082 [NOIP 2012 提高组] 同余方程

求关于 x 的同余方程 ax≡1(modb) 的最小正整数解。一个整数 x0​,即最小正整数解。输入数据保证一定有解。本题考查拓展欧几里得算法,大家可以自行学习一下。一行,包含两个整数 a,b,用一个空格隔开。

hairenwangmiao的博客 571

同余方程【洛谷P1082】

【题目描述】 求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解。 【输入输出格式】 输入格式: 输入只有一行,包含两个正整数 a, b,用一个空格隔开。 输出格式: 输出只有一行,包含一个正整数 x0,即最小正整数解。输入数据保证一定有解。 【输入输出样例】 输入样例#1: 3 10 输出样例#1: 7 【说明】 对于 40%的数据,2 ≤b≤ 1,000; 对于 60%的数据,...

ESTHERWXY的博客 263

洛谷 P1082 同余方程(同余&&exgcd)

嗯... 题目链接:https://www.luogu.org/problem/P1082 这道题很明显涉及到了同余和exgcd的问题,下面推导一下: 首先证明有解情况:     ax + by = m有解的必要条件是 m mod gcd(a, b) = 0     a为gcd(a, b)的倍数,b为gcd(a, b)的倍数,x、y为整数,     所以ax + ...

weixin_30871905的博客 255
上一篇: 【洛谷P4003】无限之环【费用流】
下一篇: 蛋糕切割【数论,数学】
stoorz1023
博客等级 码龄9年 101粉丝 595原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值