题目:P1082 同余方程

哎,搞了半天的欧几里得扩展,写了两页的草稿,终于。。。弄懂了大半。(就是烧脑-.-)

做了一下欧几里得扩展裸题,NOIP2012 day2

求:关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解。

下面证明中“→”表示等价于,“≡”表示同余,“/”表示向下取整。

∵ Ax ≡ 1 (mod m) → Ax mod m = 1 mod m

∴ 可表示 Ax = By + 1 → Ax - By = 1 即 求解x?

根据欧几里得扩展:

Ax + By = C = gcd(A, B)

∵ gcd(A, B) = gcd(B, A mod B)

∵ Bx’ + (A mod B)y’ = gcd(B, A mod B)

∴ Bx’ + (A mod B)y’ = gcd(A, B)

∴ Bx’ + (A - A/B * B)y’ = gcd(A, B)

→ Bx’ + Ay’ - B*(A/B)y’ = gcd(A, B)

→ Ay’ + B(x’ - (A/B)*y’) = gcd(A, B)

∴ x = y’, y = x’ -(A/B)*y’

前提是: Ax + By = gcd(A, B) 中,当B = 0 时,有x = 1,y = 0成立,证毕!

# include <iostream>
using namespace std;
int extend_gcd(int a, int b, int &x, int &y) {if(b == 0) {x = 1; y = 0;return a;} else {int r = extend_gcd(b, a%b, x, y);int t = x - a / b * y;x = y; y = t;return r;}
}
int main() {int a, b, x, y;cin >> a >> b;extend_gcd(a, b, x, y);while(x < 0) x = x + b; // 如果 x < 0,则 x = x + b,下面证明。cout << x;return 0;
}

∵ Ax + By = C

当 x = x’ + B, 且 y = y’ - A

A(x’ + B) + B(y’ - A) = C

→ Ax’ + A*B + By’ - A*B = C

→ Ax’ + By’ = C

∴ 得出,原式不变。

搞好了,不过深层次还没搞,最近赶时间,NOIP完后再来拓展。

C++ P1082 同余方程相关推荐

  1. 洛谷P1082 同余方程 数论

    洛谷P1082 同余方程 数论 要求 ax === 1 (mod b) 相当于求 ax + by == 1 的解 并要求 x 为最小的正整数 这样我们只要 扩展欧几里德来一发,然后最小正整数 取 mo ...

  2. Luogu P1082 同余方程(NOIP 2012) 题解报告

    题目传送门 [题目大意] 求关于x的同余方程 ax≡1(mod b)的最小整数解. [思路分析] 由同余方程的有关知识可得,ax≡1(mod b)可以化为ax+by=1,此方程有解当且仅当gcd(a, ...

  3. 洛谷 P1082 同余方程(同余exgcd)

    嗯... 题目链接:https://www.luogu.org/problem/P1082 这道题很明显涉及到了同余和exgcd的问题,下面推导一下: 首先证明有解情况: ax + by = m有解的 ...

  4. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  5. 扩展欧几里得算法、乘法逆元与中国剩余定理

    文章目录 前言 定义.定理和部分证明 整除 定义 定理 定理的证明 同余 定义 同余的性质 同余的运算律 运算律的证明 扩展欧几里得算法 代码模板 算法详解 乘法逆元 求解逆元 乘法逆元的作用 中国剩 ...

  6. NOI数学:二次同余方程的解法

    高精度取模 高精度取模_to_more_excellent的博客-CSDN博客_c++高精度取模 C++ P1082 同余方程 C++ P1082 同余方程_ice_word的博客-CSDN博客_c+ ...

  7. NOIP CSP-J CSP-S 数论 历年真题

    1957:[12NOIP普及组]质因数分解 http://ybt.ssoier.cn:8088/problem_show.php?pid=1957 2004:[20CSPJ普及组]优秀的拆分 http ...

  8. 扩展欧几里德与贝祖定理

    概述 扩展欧几里德则是用来求解有关方程 a x + b y = m ax+by=m ax+by=m的问题 扩欧模板 int exgcd(int a,int b,int &x,int & ...

  9. 重走长征路---OI每周刷题记录---11月4日 2013

    总目录详见https://blog.csdn.net/mrcrack/article/details/84471041 做题原则,找不到测评地址的题不做.2018-11-28 重走长征路---OI每周 ...

最新文章

  1. 十步优化SQL Server中的数据访问
  2. Boost::context模块fiber的throw测试程序
  3. 关于手思3.0 代码规范
  4. nubby mysql_Mysql索引 - osc_nubn2pd9的个人空间 - OSCHINA - 中文开源技术交流社区
  5. 足球预测_预测足球热
  6. Angularjs 观察者模式 理解
  7. springboot maven打包pom配置
  8. CSS实现字体镂空效果、阴影效果、字体阴影效果
  9. spss19 视频教程下载_19个网站免费下载股票视频介绍和录像
  10. DW1820A/BCM94350ZAE/BCM94356ZEPA50DX插入的正确姿势
  11. FPGA——HLS编程入门
  12. 程序员那些必须掌握的排序算法(上)
  13. Python OS模块操作文件目录
  14. 计算机科学与技术单身率,中国大陆男女比例揭晓!大学单身率专业十强来了
  15. matlab画平面心型线,如何用matlab画出心形线
  16. 【无标题】人工智能的定义
  17. 华纳媒体将持有拉美和加勒比海西班牙语地区HBO品牌服务的全部所有权,包括所有HBO、MAX、Cinemax和HBO Go服务
  18. jq设置保留两位小数_js保留两位小数方法总结
  19. CenOs安装jdk
  20. Apache KafKa阅读官方文档心得

热门文章

  1. Facebook联手纽约大学,要把核磁共振成像时间缩短10倍
  2. Excel中如何快速汇总带单位的数据
  3. 【方法】Chrome如何下载视频
  4. Oracle数据库:sql语言结构,数据查询语言DQL,select * from table;算术,别名,连接,去重等操作
  5. 300 秒就完成第一超算 1 万年的计算量,量子霸权真时代要来了吗
  6. 11n/11ac/11ax 速率速查表
  7. Excel隔行插入空行(亲自实践)
  8. ad7606驱动及仿真
  9. 全面概述将人工智能市场纳入其广泛的数据库
  10. ps怎么设计html界面,APP展示图,教你怎么用PS制作APP的界面图片