拓展欧几里得 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 ...
随机推荐
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(10)- 从Serial NAND启动
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MXRT1xxx系列MCU的Serial NAND启动. 最近越来越多的客户在咨询 i.MXRT1xxx 从 Serial N ...
- 【Spring】@RequestBody的实现原理
@RequestBody注解可以用于POST请求接收请求体中的参数,使用方式如下: @Controller public class IndexController { @PostMapping(va ...
- Blazor提取出Razor类库,没有css的class的智能提示
最开始从stackoverflow上找到了答案,有两种办法,但都不太理想 后来自己找了新的办法,其实很简单,把要用的css复制到Razor类库的wwwroot文件夹中,默认是不会复制到引用Razor类 ...
- Django学习笔记:第三章D的路由和视图
1.网站的入口--路由和视图 URL是网站Web服务的入口.用户在浏览器输入URL发出请求后,django会根据路由系统,运行对应的视图函数,然后返回信息到浏览器中. 1.1 认识路由 创建项目时,会 ...
- 【技术积累】Vue中的核心概念【四】
Vue的生命周期 Vue中的生命周期是指组件从创建到销毁的整个过程中,会触发一系列的钩子函数 Vue2中的生命周期 Vue2中的生命周期钩子函数是在组件的不同阶段执行的特定函数.这些钩子函数允许开发者 ...
- fread()模板
char buf[1<<20],*p1,*p2;#define GC (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<20,stdin ...
- node:spawn npm ENOENT
错误背景 封装脚手架时报错 错误原因 windows系统原因 解决方案 const createProjectAction = async (project) => { console.log( ...
- docker 安装 Redis环境
一.Docker搜索redis镜像 命令:docker search <镜像名称> docker search redis 二.Docker拉取镜像 命令::docker pull < ...
- 2023CISCN华中赛区re
2023CISCN华中赛区re 当时出的题 misc3-babyandroid 找so文件,加密过程也不复杂 每三个一组进行加密 这里就是先每个减去65 然后 大概是 y1=(31x1)%26+65 ...
- 使用API接口获取商品数据
在当今的数字化时代,商品数据的获取对于各种规模的企业来说都至关重要.这些数据可以帮助企业进行市场分析,制定销售策略,优化库存管理,以及实现精准营销.API(应用程序编程接口)是一种便捷的方式来获取 ...