拓展欧几里得 edgcd 模板+简易推论
LL exgcd(LL a,LL b, LL &x, LL &y) {
if(b == 0) {
x=1,y=0;
return a;
}
LL d = exgcd(b, a%b, x, y);
//x=x1,y=y1
LL z = x;//z=x1
x = y;//x=y1
y = z - y * (a / b);
return d;
}
求
a
x
+
b
y
=
=
g
c
d
(
x
,
y
)
ax + by == gcd(x,y)
ax+by==gcd(x,y) 的最小整数解
假设
a
x
+
b
y
=
=
g
c
d
(
x
,
y
)
ax+by == gcd(x,y)
ax+by==gcd(x,y)
可得
a
x
+
b
y
=
=
g
c
d
(
y
,
x
m
o
d
y
)
ax+by == gcd(y,xmody)
ax+by==gcd(y,xmody)
构造
b
x
1
+
(
a
m
o
d
b
)
y
1
=
=
g
c
d
(
y
,
x
m
o
d
y
)
bx1+(amodb) y1 == gcd(y,xmody)
bx1+(amodb)y1==gcd(y,xmody)
可得
b
x
1
+
(
a
−
(
a
/
b
×
b
)
)
y
1
=
=
g
c
d
(
y
,
x
m
o
d
y
)
bx1+(a-(a/b \times b)) y1 == gcd(y,xmody)
bx1+(a−(a/b×b))y1==gcd(y,xmody)
化简左项
b
x
1
+
(
a
y
1
−
(
a
/
b
×
b
)
y
1
)
bx1+(ay1-(a/b \times b)y1)
bx1+(ay1−(a/b×b)y1)
=
=
b
x
1
+
a
y
1
−
(
a
/
b
×
b
×
y
1
)
== bx1+ay1-(a/b \times b \times y1)
==bx1+ay1−(a/b×b×y1)
=
=
a
y
1
+
b
(
x
1
−
a
/
b
×
b
×
y
1
)
== ay1+b(x1-a/b \times b \times y1)
==ay1+b(x1−a/b×b×y1)
得
x
=
y
1
,
y
=
x
1
−
a
/
b
×
b
×
y
1
x = y1, y = x1-a/b \times b \times y1
x=y1,y=x1−a/b×b×y1
拓展欧几里得 edgcd 模板+简易推论的更多相关文章
- HDU-3579-Hello Kiki (利用拓展欧几里得求同余方程组)
设 ans 为满足前 n - 1个同余方程的解,lcm是前n - 1个同余方程模的最小公倍数,求前n个同余方程组的解的过程如下: ①设lcm * x + ans为前n个同余方程组的解,lcm * x ...
- poj 1061 青蛙的约会 拓展欧几里得模板
// poj 1061 青蛙的约会 拓展欧几里得模板 // 注意进行exgcd时,保证a,b是正数,最后的答案如果是负数,要加上一个膜 #include <cstdio> #include ...
- gcd模板(欧几里得与扩展欧几里得、拓展欧几里得求逆元)
gcd(欧几里得算法辗转相除法): gcd ( a , b )= d : 即 d = gcd ( a , b ) = gcd ( b , a mod b ):以此式进行递归即可. 之前一直愚蠢地以为辗 ...
- [zoj 3774]Power of Fibonacci 数论(二次剩余 拓展欧几里得 等比数列求和)
Power of Fibonacci Time Limit: 5 Seconds Memory Limit: 65536 KB In mathematics, Fibonacci numbe ...
- ACM数论-欧几里得与拓展欧几里得
ACM数论——欧几里得与拓展欧几里得 欧几里得算法: 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd ...
- NOIP2012拓展欧几里得
拉板题,,,不说话 我之前是不是说过数据结构很烦,,,我想收回,,,今天开始的数论还要恶心,一早上听得头都晕了 先来一发欧几里得拓展裸 #include <cstdio> void gcd ...
- bzoj4517: [Sdoi2016]排列计数--数学+拓展欧几里得
这道题是数学题,由题目可知,m个稳定数的取法是Cnm 然后剩下n-m本书,由于编号为i的书不能放在i位置,因此其方法数应由错排公式决定,即D(n-m) 错排公式:D[i]=(i-1)*(D[i-1]+ ...
- POJ 2891 Strange Way to Express Integers(拓展欧几里得)
Description Elina is reading a book written by Rujia Liu, which introduces a strange way to express ...
- POJ1061 青蛙的约会-拓展欧几里得
Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事 ...
- BZOJ-2242 计算器 快速幂+拓展欧几里得+BSGS(数论三合一)
污污污污 2242: [SDOI2011]计算器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 2312 Solved: 917 [Submit][S ...
随机推荐
- 【游记】NOI 2023省选游记
Day -N 下午去机房训练,回去的时候邱大大说 "我\(,lj,szy\) 可以去参加 NOI 2023省选".我瞬间就惊了.作为一个 \(CSP-S\) 只有 \(91pts\ ...
- 记一次线上问题 → Deadlock 的分析与优化
开心一刻 今天女朋友很生气 女朋友:我发现你们男的,都挺单纯的 我:这话怎么说 女朋友:脑袋里就只想三件事,搞钱,跟谁喝点,还有这娘们真好看 我:你错了,其实我们男人吧,每天只合计一件事 女朋友:啥事 ...
- 抽象类 vs 接口【概念解析系列_2】【C# 基础】
〇.前言 抽象类和接口的相似之处还是很多的,但是它们的侧重点不同,本文将简单梳理下. 一.简介与示例 1.1 抽象类 抽象类就是不能使用 new 方法进行实例化的类,即没有具体实例对象的类. 抽象类有 ...
- Node.js安装中出现的问题及其解决方案
Node.js安装与配置流程,请参考 1.npm -v测试时出现警告 更好的选择是安装一个更完善的版本 问题出现的原因 node更新后是最新版 但是npm的版本没有相应的更新存在版本滞后导致问题出现 ...
- WindowsServer安装sshd服务
系统版本:Windows Server 2016(有桌面) 网上有不少教程是用powershell在线安装,实测在server 2016上不行,但在Windows 10测试可行,不知道什么情况,所以改 ...
- 应用性能监控工具(pinpoint)部署
Pinpoint是一款全链路分析工具,提供了无侵入式的调用链监控.方法执行详情查看.应用状态信息监控等功能.pinpoint使用HBASE储存数据. 下面介绍pinpoint部署及应用. 1. 安装 ...
- 浅谈 Linux 下 vim 的使用
Vim 是从 vi 发展出来的一个文本编辑器,其代码补全.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用. Vi 是老式的字处理器,功能虽然已经很齐全了,但还有可以进步的地方.Vim 可 ...
- Vue【原创】可拖动列表 darg-list
可拖动排序的列表 drag-list,这个比较简单易懂,拿例子直接运行看效果就好了. 组件代码: 1 <template> 2 <ul class="list" ...
- 要调用API接口获取商品数据,首先需要了解该API的文档和规范
要调用API接口获取商品数据,首先需要了解该API的文档和规范.大多数API都需要使用API密钥进行身份验证,因此您需要先注册API提供商,并从他们那里获取API密钥.以下是一些通用的步骤: 1. ...
- Visual Studio必备插件
1.Rainbow Braces 2.Codist 3.ResXManager 4.XAML Styler for Visual Studio 2022 5.Viasfora 6.ZenCoding ...