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 模板+简易推论的更多相关文章

  1. HDU-3579-Hello Kiki (利用拓展欧几里得求同余方程组)

    设 ans 为满足前 n - 1个同余方程的解,lcm是前n - 1个同余方程模的最小公倍数,求前n个同余方程组的解的过程如下: ①设lcm * x + ans为前n个同余方程组的解,lcm * x ...

  2. poj 1061 青蛙的约会 拓展欧几里得模板

    // poj 1061 青蛙的约会 拓展欧几里得模板 // 注意进行exgcd时,保证a,b是正数,最后的答案如果是负数,要加上一个膜 #include <cstdio> #include ...

  3. gcd模板(欧几里得与扩展欧几里得、拓展欧几里得求逆元)

    gcd(欧几里得算法辗转相除法): gcd ( a , b )= d : 即 d = gcd ( a , b ) = gcd ( b , a mod b ):以此式进行递归即可. 之前一直愚蠢地以为辗 ...

  4. [zoj 3774]Power of Fibonacci 数论(二次剩余 拓展欧几里得 等比数列求和)

    Power of Fibonacci Time Limit: 5 Seconds      Memory Limit: 65536 KB In mathematics, Fibonacci numbe ...

  5. ACM数论-欧几里得与拓展欧几里得

    ACM数论——欧几里得与拓展欧几里得 欧几里得算法: 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd ...

  6. NOIP2012拓展欧几里得

    拉板题,,,不说话 我之前是不是说过数据结构很烦,,,我想收回,,,今天开始的数论还要恶心,一早上听得头都晕了 先来一发欧几里得拓展裸 #include <cstdio> void gcd ...

  7. bzoj4517: [Sdoi2016]排列计数--数学+拓展欧几里得

    这道题是数学题,由题目可知,m个稳定数的取法是Cnm 然后剩下n-m本书,由于编号为i的书不能放在i位置,因此其方法数应由错排公式决定,即D(n-m) 错排公式:D[i]=(i-1)*(D[i-1]+ ...

  8. POJ 2891 Strange Way to Express Integers(拓展欧几里得)

    Description Elina is reading a book written by Rujia Liu, which introduces a strange way to express ...

  9. POJ1061 青蛙的约会-拓展欧几里得

    Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事 ...

  10. BZOJ-2242 计算器 快速幂+拓展欧几里得+BSGS(数论三合一)

    污污污污 2242: [SDOI2011]计算器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 2312 Solved: 917 [Submit][S ...

随机推荐

  1. TFS 更换电脑名称后映射失效

    TFS 更换电脑名称后映射失效 建议不要随便更改电脑名 环境 Visual Studio 2019 : Win10 操作步骤 查找 TFS 的相关配置文件.如果你知道你之前的电脑名字可以跳过这一步:如 ...

  2. pandas 格式化日期

    output_data["ShipDate"] = output_data["ShipDate"].dt.strftime("%Y/%m/%d&quo ...

  3. Kubernetes: Kubectl 源码分析

    0. 前言 kubectl 看了也有一段时间,期间写了两篇设计模式的文章,是时候对 kubectl 做个回顾了. 1. kubectl 入口:Cobra kubectl 是 kubernetes 的命 ...

  4. 《Pro Git》起步笔记

    @ 目录 什么是版本控制 本地版本控制系统 集中化的版本控制 分布式的版本控制系统 Git简史 Git是什么 安装Git 在Linux上安装 在Windows上安装 初次运行Git前的配置 用户信息 ...

  5. 联通光猫获取超级管理员密码,联通宽带逻辑ID 获取

    首先使用普通账户登录然后访问这个链接 http://192.168.1.1/backpresettings.conf 保存backpresettings.conf 打开文件就可以看到 cuadmin ...

  6. Typescript - 索引签名

    1 索引签名概述 在 TypeScript 中,索引签名是一种定义对象类型的方式,它允许我们使用字符串或数字作为索引来访问对象的属性. 1.1 索引签名的定义和作用 索引签名通过以下语法进行定义: { ...

  7. c++算法之离散化

    什么是离散化? 离散化,故离散数学,其中的"离散"就是不连续的意思.离散化可以保持原数值之间相对大小关系不变的情况下将其映射成正整数. 也就是给可能用到的数值按大小关系分配一个编号 ...

  8. 1、MyBatis简介

    1.1.MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁 移到了Google Code. ...

  9. 在移动硬盘上安装Win11系统(不使用工具)

    一.准备镜像文件 1.前往官网下载Win11镜像文件. Win11官网:Download Windows 11 (microsoft.com) 2.装载Win11镜像 找到Win11镜像.右键点击装载 ...

  10. Pytest 框架执行用例流程浅谈

    背景: 根据以下简单的代码示例,我们将从源码的角度分析其中的关键加载执行步骤,对pytest整体流程架构有个初步学习. 代码示例: import pytest def test_add(): asse ...