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

扩展欧几里得 exgcd

扩展欧几里得 exgcd

求解形如 \(a\cdot x + b\cdot y = \gcd(a,b)\) 的不定方程的任意一组解。

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;
}

例题:求解二元一次不定方程 \(A\cdot x + B\cdot y = C\)

auto clac = [&](int a, int b, int c) {int u = 1, v = 1;if (a < 0) { // 负数特判,但是没用经过例题测试a = -a;u = -1;}if (b < 0) {b = -b;v = -1;}int x, y, d = exgcd(a, b, x, y), ans;if (c % d != 0) { // 无整数解cout << -1 << "\n";return;}a /= d, b /= d, c /= d;x *= c, y *= c; // 得到可行解ans = (x % b + b - 1) % b + 1;auto [A, B] = pair{u * ans, v * (c - ans * a) / b}; // x最小正整数 特解ans = (y % a + a - 1) % a + 1;auto [C, D] = pair{u * (c - ans * b) / a, v * ans}; // y最小正整数 特解int num = (C - A) / b + 1; // xy均为正整数 的 解的组数
};
http://www.hskmm.com/?act=detail&tid=38025

相关文章:

  • 离散对数 bsgs 与 exbsgs
  • 常见数列
  • 20232314 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 【LTDC】LTDC 简介
  • 分类器案例 - -一叶知秋
  • Markdown数学公式 - -一叶知秋
  • 最大流
  • 最小割树 Gomory-Hu Tree
  • 最小割
  • 差分约束
  • 图论常见结论及例题
  • 最长路(topsort+DP算法)
  • 二分图最大匹配
  • 最短路径树(SPT问题)
  • 欧拉路径/欧拉回路 Hierholzers
  • 无源汇点的最小割问题 Stoer–Wagner
  • CF2152G
  • 染色法判定二分图 (dfs算法)
  • 链式前向星建图与搜索
  • 一般图最大匹配
  • 平面图最短路(对偶图)
  • 多源汇最短路(APSP问题)
  • 最小生成树(MST问题)
  • 缩点(Tarjan 算法)
  • 常见概念
  • 单源最短路径(SSSP问题)
  • CNCF项目记录2025-10
  • 关于 vue项目 代理的坑;baseURL必须为空;代理才会生效
  • 点分治 / 树的重心
  • 最近公共祖先 LCA