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

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

【题目来源】
https://www.luogu.com.cn/problem/P1082

【题目描述】
求关于 x 的同余方程 ax≡1(mod b) 的
最小正整数解

【输入格式】
一行,包含两个整数 a,b,用一个空格隔开。

【输出格式】
一个整数 x0,即最小正整数解。输入数据保证一定有解。

【输入样例】
3 10

【输出样例】
7

【算法分析:扩展欧几里得算法与模逆元
● 理论基础 → 裴蜀定理指出:若整数 a 和 b 互质(即 gcd(a,b)=1),则存在整数 x 和 y,使得 ax+by=1。此时,x 即为 a 模 b 的乘法逆元,即满足 ax≡1(mod b)。
● 求解步骤
(1)验证互质性:计算 gcd(a,b),若结果不为 1,则逆元不存在。
(2)扩展欧几里得算法:解方程 ax+by=1,得到的 x 即为逆元(需调整为正数)。
● 调整结果:若 x 为负数,通过
(x mod T + T) mod T 调整为最小正整数解,其中 T=b/gcd(a,b) 为解的周期。

【算法代码】
 注意:
此算法
代码,适用于 a,b≤10^6 时的情形。详见:https://blog.csdn.net/hnjzsyjyj/article/details/147805062

#include <bits/stdc++.h>
using namespace std;int exgcd(int a,int b,int &x,int &y) {if(b==0) {x=1,y=0;return a;}int d=exgcd(b,a%b,y,x);y-=a/b*x;return d;
}int inv(int a,int b) {int x,y;exgcd(a,b,x,y);return (x%b+b)%b; //Ensure inverse is positive.
}int main() {int a,b;cin>>a>>b;cout<<inv(a,b)<<endl;return 0;
}/*
in:
3 10out:
7
*/






【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/147673627
https://blog.csdn.net/hnjzsyjyj/article/details/147805062
https://blog.csdn.net/hnjzsyjyj/article/details/147804004
https://blog.csdn.net/hnjzsyjyj/article/details/147778571


 

相关文章:

  • 专业课复习笔记 9
  • BUUCTF——PYWebsite
  • 新书速览|纯血鸿蒙HarmonyOS NEXT原生开发之旅
  • 2025年阿里云ACP人工智能高级工程师认证模拟试题(附答案解析)
  • 杭州电商全平台代运营领军者——品融电商
  • 【华为HCIP | 华为数通工程师】821—多选解析—第二十三页
  • Clickhouse 迁移到 Doris 的最佳实践
  • C++中的std::allocator
  • VMware虚拟机实例-docker启动失败
  • 洛谷B3648 [语言月赛202208] 你几岁了
  • SDK does not contain ‘libarclite‘ at the path
  • ✅ TensorRT Python 安装精简流程(适用于 Ubuntu 20.04+)
  • Qt5.14.2 链接 MySQL 8.4 遇到的问题
  • Kubernetes 高可用集群安装
  • Windows 添加 hosts 映射
  • ES6基础特性
  • 关于高并发GIS数据处理的一点经验分享
  • apt 软件源与 Docker 镜像源
  • 【Linux网络】 HTTP cookie与session
  • 【中药快速划价小程序】佳易王中药方快速划价软件:主打一个快字,中药划价软件操作指南,软件实操教程
  • 2025年上海科技节5月17日启动,56家重点实验室和大科学设施将向公众开放
  • 何立峰:中方坚定支持多边主义和自由贸易,支持世界贸易组织在全球经济治理中发挥更大作用
  • 龙湖集团:今年前4个月销售220.8亿元,4月新增两块土地储备
  • 婚姻登记“全国通办”首日,上海虹口登记中心迎来“甜蜜高峰”
  • 上海发布首份直播电商行业自律公约,禁止虚假宣传、商业诋毁
  • 暴利之下:宠物殡葬行业的冰与火之歌