一.同余方程的判定

我们知道同余方程是形如

ax ≡ b (mod n)   的东西,用文字表达就是:

ax和b除以n的余数相同

那么,经过如下推理:(用=代替恒等于)

ax=b (mod n)

ax=b+n*x2 (转化为b加上n乘上某个数等于ax)

ax-n*x2=b(移项得)

a x1 + n x2 = b(转换)

ax + ny = b

但是为了看起来更顺眼,我们将除x,y的元素改变名称,得到:

ax + by = c

那么,判断是否有解:

举几个例子,不难得到:

c|gcd(a,b)时,ax + by = c有解。

然后可以举几个例子:

①2x + 3y = 1

这是一种特殊情况,解得其中一个解为 x0 = -1, y0 = 1

②4x + 6y = 2

化简为 2x + 3y = 1,解同上

③2x + 3y = 5

解得其中一个解为  x0  = -5, y0 = 5

发现与①的规律,也就是x0 * 5,y0 * 5

那么就可以将ax + by = c 简化为ax + by = 1 ,

换种形式表达就是:ax ≡ 1 (mod n)


二.同余方程的解法

这时,我们需要引入exgcd。

exgcd可以用来求

ax + by = gcd (a,b)

那么,如何证明呢?

先给出结果:

{

要解 ax + by  = 1

先解 bx + (a%b)y = 1

}

如何得到它?

在 bx + (a%b)y = 1 中展开a,得到

a = b·floor(a/b) + a%b

代入原方程,得

b·floor(a/b) + a%b)x + by = 1

与ax + by = 1等量代换,得

(a%b)*x + b(floor(a/b)·x+y) = 1

得到其中解:y0 = x,x0 = floor(a/b)·x+y

又由gcd(a,b) = gcd(b,a%b) 得到

exgcd(a,b,x,y) = exgcd(b,a%b,y,x), y -= (a/b) * x

代码:

#include <cstdio>
void exgcd(int a, int b, int &x, int &y)
{
if (b == ) x = , y = ;
else exgcd(b, a % b, y, x), y -= (a / b) * x;
}
int main()
{
int a = , b = , x, y;
exgcd(a, b, x, y);
printf("%d %d\n", x, y);
return ;
}

【OI】同余方程的更多相关文章

  1. 收集一些关于OI/ACM的奇怪的东西……

    一.代码: 1.求逆元(原理貌似就是拓展欧几里得,要求MOD是素数): int inv(int a) { if(a == 1) return 1; return ((MOD - MOD / a) * ...

  2. OI总结(垃圾排版就忽略了吧)

    学OI一年了,到现在联赛所需要的知识已经基本学完了.现在,有必要回过头来,总结总结自己一年来学到的知识以及得到的经验教训. 基础 语言基础 C++的语言基础啥的就略了吧. 算法复杂度分析 O:复杂度的 ...

  3. OI知识点|NOIP考点|省选考点|教程与学习笔记合集

    点亮技能树行动-- 本篇blog按照分类将网上写的OI知识点归纳了一下,然后会附上蒟蒻我的学习笔记或者是我认为写的不错的专题博客qwqwqwq(好吧,其实已经咕咕咕了...) 基础算法 贪心 枚举 分 ...

  4. OI中组合数的若干求法与CRT

    OI中组合数的若干求法与CRT 只是下决心整理一下子呢~ 说明:本篇文章采用\(\binom{a}{b}\)而不是\(C_{a}^b\),以\(p\)指代模数,\(fac_i\)指代\(i!\),\( ...

  5. OI数学汇总

    最前面:\(\LaTeX\)可能需要加载一会,请耐心等待o~ 前言 数学在\(\text{OI}\)中十分重要.其中大多都是数论. 什么是数论? \[ 研究整数的理论 --zzq \] 本文包含所有侧 ...

  6. ACM&OI 基础数论算法专题

    ACM&OI 基础数学算法专题 一.数论基础 质数及其判法 (已完结) 质数的两种筛法 (已完结) 算数基本定理与质因数分解 (已完结) 约数与整除 (已完结) 整除分块 (已完结) 最大公约 ...

  7. 啥也不是 -「OI 易犯错误整理」

    原帖出自 Nefelibata,不过他不想维护,所以就交给 STrAduts 了 awa.因为一些不可抗力,帖主转移至 XSC062.申请置顶! 前言 Nefelibata:因为笔者弱到无法形容,因此 ...

  8. 再见,OI

    你好,NOIP 2015年9月1日 正式成为了福建省莆田一中的一名高一成员 后来学校搞了选修 大家都很激动 因为自己的兴趣和特长能够得到发挥了(或者说能逃课或者看好多电影) 发现选修提供的选项中有好几 ...

  9. NOIP2012同余方程[exgcd]

    题目描述 求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入输出格式 输入格式: 输入只有一行,包含两个正整数 a, b,用一个空格隔开 输出格式: 输出只有一行,包含一个正整 ...

随机推荐

  1. 《网络管理》IP地址管理与子网划分

    IP地址管理——ipmaster ipmaster是一款对IP地址进行管理的软件,使用该软件可以提高网络管理员的工作效率.在大型网络中,使用该软件可以有序且高效地实现大中小型企业网IP地址的分配和管理 ...

  2. Codeforces_761_E_(dfs)

    E. Dasha and Puzzle time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  3. catkin_package()是什么意思?

    DEPENDS 和 CATKIN_DEPENDS 用来告诉 catkin 需要将你程序包A的哪些依赖项传递给使用 find_package(...) 查找你的程序包的程序包B. 而在CMakeList ...

  4. R语言学习 - 箱线图(小提琴图、抖动图、区域散点图)

    箱线图 箱线图是能同时反映数据统计量和整体分布,又很漂亮的展示图.在2014年的Nature Method上有2篇Correspondence论述了使用箱线图的好处和一个在线绘制箱线图的工具.就这样都 ...

  5. 以POST方式推送JSON数据,并接收返回的服务器消息

    private static string GetResult(string jsonString, string type) { string url = GetUrl(type); string ...

  6. CentOS 7中firewall防火墙详解和配置以及切换为iptables防火墙--转载

    最近在linux(这里用到的是Centos7的64位版本)安装nginx时,在开放80端口时用iptables设置端口 和重启服务发现提示未找到文件,在网络上收集查找后发现在Centos7中iptab ...

  7. 迷宫问题 POJ - 3984 (搜索输出路径)

    题目大意 题目不需要大意,poj居然还有中文题 鸣谢 特别鸣谢ljc大佬提供的方法!!! 解法 我们可能输出个最短路径的长度比较简单,但是输出最短路径真的是没有做过,这里有一种简单的方法 因为我们的d ...

  8. Tomcat服务器启动后访问localhost:8080显示404的原因

    原因:在eclipse中关联了Tomcat服务器 重点来了,如果你是在eclipse中点击启动按钮启动的Tomcat 那么Tomcat不会默认部署它自己的测试项目(也就是大猫localhost:808 ...

  9. Unity高像素截图

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/51386272 作者:car ...

  10. Spring常用注解总结 hibernate注解

    1.@Resource和@Autowired @Resource和@Autowired功能一样在容器查找匹配的Bean @Autowired默认按照byType方式进行bean匹配,@Resource ...