首页 > 编程语言 >扩展欧几里得算法公式快速推导

扩展欧几里得算法公式快速推导

时间:2024-10-25 20:00:26浏览次数:4  
标签:yb right gcd 推导 int 欧几里得 xa 算法 left

主要是写在这里供自己以后复习查阅所用。


求特解

由辗转相除法(欧几里得算法)可得 \(\gcd(a,b)=\gcd(b,a \bmod b)\)

由裴蜀定理,存在 \(x,y\) 使得 \(xa+yb=\gcd(a,b)\),存在 \(x',y'\) 使得 \(x'b+y'(a \bmod b)=\gcd(b,a \bmod b)\)

所以 \(xa+yb = x'b+y'(a \bmod b)\)

又因为 \(a \bmod b\) 可以写成 \(a - \left\lfloor \dfrac{a}{b} \right\rfloor \times b\)

所以 \(xa+yb = x'b + y' \left( a - \left\lfloor \dfrac{a}{b} \right\rfloor \times b \right)\)

转化右式,\(xa+yb = y'a + \left( x'- \left\lfloor \dfrac{a}{b} \right\rfloor \times y' \right) b\)

这样,左右式就变成了同一个形式,在每次进行辗转相除返回时时令:

\[\left\{ \begin{aligned} x&=y'\\ y&=x'- \left\lfloor \dfrac{a}{b} \right\rfloor \times y' \end{aligned} \right. \]

其中 \(x',y'\) 分别表示后面递归返回的 \(x,y\)。

当 \(b=0\) 时,因为 \(a+b=a=\gcd(a,0)=\gcd(a,b)\),所以此时 \(x=1,y=1\)。

模板代码:

int exgcd(int a,int b,int &x,int &y)
{
	if(b)
	{
		int res=exgcd(b,a%b,x,y);
		int x_=x;
		x=y,y=(x_-(a/b)*y);
		return res;
	}
	else
	{
		x=1,y=1;
		return a;
	}
}

求通解

解不定方程 \(xa+yb=c\)

设 \(d=\gcd(a,b)\)

标签:yb,right,gcd,推导,int,欧几里得,xa,算法,left
From: https://www.cnblogs.com/jerrycyx/p/18503201

相关文章

  • floyd-warshall算法
    Floyd-warshall算法问题描述图的最短路径问题,多源最短路径问题求解算法思路设Dijk为从i到j的只以(1...k)集合为中间节点的最短路径的长度,Dijk=min(Dijk-1,Dikk-1+Dkjk-1)若最短路径经过点k,则Dijk=Dikk-1+Dkjk-1;若最短路径不经过点k,则Dijk=Dijk-1python......
  • 算法刷题记录(day1)
     前言 之前在LeetCode上断断续续刷了几百道题,但是很多题可能过一段时间后又忘了,打算从今天开始尽量保持每天刷题,同时记录下自己的刷题过程和对题目的理解,方便自己进行总结和复习。LC15.三数之和题目描述:给你一个整数数组 nums ,判断是否存在三元组 [nums[i],nums[j]......
  • 【强化学习】—— Q-learning算法
    Q-Learning算法Q-learning是一种无模型的强化学习算法,用于寻找最优策略以最大化累积奖励。它通过学习一个状态-动作值函数Q(s,......
  • 程序员现在应该钻研算法还是prompt能力
    标题:程序员现在应该钻研算法还是prompt能力摘要:1、算法与prompt能力,两者在当今编程领域均占据了极为重要的地位。算法作为解决问题的基础,强调逻辑思维与高效实现;而prompt能力,则关乎于与先进AI系统的交互,强调理解与指令的准确传达。本文旨在探讨程序员应如何在算法与prompt能力间......
  • 【闲谈程序设计例三则:抛弃传统单步进初级阶段,用推导归纳出来的规律写代码,进入进阶阶段
    闲谈程序设计三则:抛弃传统单步进,用推导归纳出来的规律写代码。本论坛常见新学提问都是一些入门级别的问题,近来AI活跃抢答,然而,对于有些问题AI可以说是答非所问,令人哭笑不得,而AI能回答的通常也只是极普通的算法,这样的算法随便搜索多如牛毛,因此,AI目前决不可能超越人类的能力,下面......
  • 蓝桥首场算法团队战2024.10.24 题解(1~5)
    蓝桥首场算法团队战2024.10.24题解1:不同角度【算法赛】题意:给定自然数S,需要找出一个自然数T。使得数字T>数字S并且S和T转化为字符串后,满足S的字典序>T的字典序。T一定存在,找出符合条件且字典序最小的T。输入:第一行一个整数t,表示t组测试用例。\((......
  • 算法题——执行操作可获得的最大总奖励
    3181.执行操作可获得的最大总奖励题干给你一个整数数组rewardValues,长度为n,代表奖励的值。最初,你的总奖励x为0,所有下标都是未标记的。你可以执行以下操作任意次:从区间[0,n-1]中选择一个未标记的下标i。如果rewardValues[i]大于你当前的总奖励x,则将rewar......
  • 全面了解 NGINX 的负载均衡算法
    NGINX提供多种负载均衡方法,以应对不同的流量分发需求。常用的算法包括:最少连接、最短时间、通用哈希、随机算法和IP哈希。这些负载均衡算法都通过独立指令来定义,每种算法都有其独特的应用场景。以下负载均衡方法(IP哈希除外)适用于HTTP、TCP和UDP上游池:轮询轮询(Ro......
  • K-近邻算法(KNN)
    """K-近邻算法用于分类和回归问题。比如,判断一款游戏是否受欢迎。KNN算法的基本思想是:如果一个样本在特征空间中的k个最邻近的样本中的大多数属于某个类别,则该样本也属于这个类别。KNN算法的实现方法有两种:1.基于欧氏距离的KNN算法2.基于余弦相似度的KNN算法KNN算法的优点:1.简......
  • 算法设计实验6
    p1249有一个8*8的棋盘,行号、列号均为0-7,一个特殊放个的位置是(5,6),给出采用L形骨牌覆盖其他全部方格的一种方案1#include<ostream>2#include<iostream>3#defineMAX_SIZE84usingnamespacestd;5intk;6intx,y;7intboard[MAX_SIZE][MAX_SIZE];8int......