当前位置: 首页 > news >正文

拓展欧几里得算法与丢番图方程

https://www.luogu.com.cn/problem/P1082

题意概述:求 \(a\) 在模 \(b\) 意义下的逆元(\(b\) 不保证为质数,保证答案有解)。


运用拓展欧几里得算法求逆元,$ a x \equiv 1 \pmod {b}$ 等价于 $ ax = kb + 1 $,等价于 $ ax + by = 1$,求方程中 \(x\) 的最小正整数解。根据裴蜀定理,方程有整数解的充要条件是 \(a\)\(b\) 互质。


//author:kzssCCC#include <bits/stdc++.h>
using namespace std;
using ll = long long;void solve(){ll a,b;cin >> a >> b;ll x,y;function<void(ll,ll)> exgcd = [&](ll a,ll b){if (b==0){x = 1;y = 0; }else{exgcd(b,a%b);ll tx = x;ll ty = y;x = ty;y = tx-a/b*ty; }};exgcd(a,b);x = (x%b+b)%b;cout << x << '\n';
}int main(){ios::sync_with_stdio(false);cin.tie(0);int t = 1;cin >> t;while (t--) solve();return 0;
}

https://www.luogu.com.cn/problem/P5656

题意概述:给定不定方程(丢番图方程):$$ ax + by = c $$
如果方程无整数解,输出 \(-1\)
如果方程有正整数解(\(x\)\(y\) 能同时取到正整数),输出正整数解的数量,正整数解中 \(x\) 的最大值和最小值,\(y\) 的最大值和最小值。
如果方程无正整数解,输出整数解中 \(x\) 的最小正整数解,\(y\) 的最小正整数解。


\(d = gcd(a,b)\),根据裴蜀定理,\(c\)\(d\) 的倍数,否则无解。
首先考虑方程 \(ax + by = d\),变换成原方程整体乘 \(c/d\) 即可。
用拓展欧几里得算法求得一组特解 \(x'\)\(y'\),则有:

\[x = x' + k \cdot (b/d) \]

\[y = y' - k \cdot (a/d) \]

\(k\) 为任意整数。

容易得到原方程的解为:

\[x = c/d \cdot x' + k \cdot (b/d) \]

\[y = c/d \cdot y' - k \cdot (a/d) \]


//author:kzssCCC#include <bits/stdc++.h>
using namespace std;
using ll = long long;void solve(){ll a,b,c;cin >> a >> b >> c;ll x,y,d;function<void(ll,ll)> exgcd = [&](ll a,ll b){if (b==0){d = a;x = 1;y = 0;}else{exgcd(b,a%b);ll tx = x;ll ty = y;x = ty;y = tx-a/b*ty;			}};exgcd(a,b);if (c%d!=0){cout << -1 << '\n';return;}x *= c/d;y *= c/d;if (x<1){ll p = (1-x+b/d-1)/(b/d);x += b/d*p;y -= a/d*p;}else{ll p = (x-1)/(b/d);x -= b/d*p;y += a/d*p;}if (y<1){ll p = (1-y+a/d-1)/(a/d);cout << x << ' ' << y+a/d*p << '\n';		}else{ll p = (y-1)/(a/d);cout << p+1 << ' ' << x << ' ' << y-a/d*p << ' ' << x+b/d*p << ' ' << y << '\n';}
}int main(){ios::sync_with_stdio(false);cin.tie(0);int t;cin >> t;while (t--) solve();return 0;
}
http://www.jsqmd.com/news/683619/

相关文章:

  • Qianfan-OCR实战教程:OCR结果与知识图谱对接——构建领域文档智能检索系统
  • 从电话按键音到FPGA:手把手教你用Verilog实现Goertzel算法,完成DTMF信号实时解码
  • 第三十二天(4.22)
  • IgH EtherCAT 从入门到精通:第 16 章 用户空间库 libethercat 开发
  • Java项目如何零停机迁移到Loom+Reactive?揭秘某金融级系统72小时平滑升级全过程
  • 特征降维用于可视化分析的方法——PCA
  • 为什么有些论文降AI之后可读性变差:改写质量影响因素深度分析
  • 新疆高性价比旅行社推荐|赴新疆之约,海洋国旅更懂你 - 中媒介
  • YOLOv8-Seg模型在RK3588和旭日X3上的板端部署实战:从ONNX导出到性能调优全记录
  • PyTorch七日速成计算机视觉深度学习实战
  • 三分钟彻底理解:深度学习为什么要做单位标准差归一化?
  • Sunshine:终极免费开源游戏串流服务器完整指南
  • 铁罐定制常见问题解答(2026最新专家版) - 博客湾
  • Windows Defender Remover:如何彻底禁用系统安全防护的完整指南
  • 2026 年机箱机柜厂家推荐榜:不锈钢机箱机柜、金属机箱机柜、设备机箱机柜、机箱机柜外壳厂家选择指南 - 海棠依旧大
  • S32K3开发避坑指南:搞懂EDC、XBIC、ECC,别让数据完整性错误拖垮你的项目
  • PCA降维后特征含义模糊?试试用鸢尾花数据集可视化解释主成分
  • Spring Boot 4.0 Agent-Ready架构:从Java Agent加载失败到毫秒级热重载,97%开发者忽略的3个ClassLoader陷阱与修复代码模板
  • 广州市正规靠谱GEO搜索优化推广代运营公司找哪家 - 舒雯文化
  • 嘎嘎降AI和PaperRR哪个更适合理工科论文:2026年实测对比
  • 随机子空间集成方法原理与Python实现
  • 2026铁罐定制攻略:选对厂家轻松实现降本30% - 博客湾
  • 合约编程不是银弹!C++26 Contracts在嵌入式/金融/游戏三大场景的实测性能损耗与安全收益比,全数据披露
  • Agent 的“性格”设定:如何通过 System Prompt 控制 Agent 的行为风格?
  • 不止于画图:用HFSS高效建模前,你必须搞懂的5个核心概念(工作平面、坐标系、材料库、布尔运算、历史树)
  • Windows 11任务栏拖放功能修复:三分钟恢复高效工作流
  • 600亿美元!马斯克收购Cursor,是布局未来还是绑定旧路径?
  • Phi-3-mini-4k-instruct-gguf多场景落地:电商客服话术生成与消费者情绪识别联动
  • MybatisPlus代码生成插件深度体验:从安装到覆盖更新,一篇讲透所有细节
  • 嘎嘎降AI和去AIGC哪个更适合临时使用:2026年功能与性价比对比