首页 > 其他分享 >浅谈扩展欧几里得

浅谈扩展欧几里得

时间:2023-04-30 10:56:10浏览次数:47  
标签:lfloor right 浅谈 int 欧几里得 扩展 mid rfloor gcd

前置知识

朴素欧几里得

问题

已知 $a$ $,$ $b$ , 求一组$(x,y)$满足$ax+by=c$

定理

无解:$c \mid \gcd(a, b)$不成立

有解

a,b中一个为负则对其加另一个直至其为正,两个为负则翻转正负(包括答案)

 

void ex_gcd(int a,int b,int &x,int &y){
if(!b) x=1,y=0;
else ex_gcd(b, a % b, y, x),y-=a/b*x; //x,y倒置
}

 

答案记得乘c除以$\gcd(a, b)$

证明

易得 a $\mid$ $\gcd(a, b)$, b $\mid \gcd(a, b)$, c $\mid \gcd(a, b)$

故将a,b,c除以$\gcd(a, b)$得a',b',使a',b'互质

设x', y', a'x'+b'y'=1

则x=c'x',y=c'y'

故ax+by=$\gcd(a, b)$

$\Rrightarrow$ax+by=$\gcd(b,$a%b$)$

=bx+(a $\bmod b$)*y

=bx+(a-$\left \lfloor \frac{a}{b} \right \rfloor$b) y

=ay+b(x-$\left \lfloor \frac{a}{b} \right \rfloor$y)

故x变为y , y变为(x-$\left \lfloor \frac{a}{b} \right \rfloor$y)

标签:lfloor,right,浅谈,int,欧几里得,扩展,mid,rfloor,gcd
From: https://www.cnblogs.com/cdx1221/p/17365014.html

相关文章

  • 浅谈朴素欧几里得
    问题求x,y的最大公约数定理$\gcd(x,y)$=$\gcd(y,$x%y$)$证明设x=$ay+b$,则b=$x-ay$,b=x%y。再设d,有$x\equivy\equiv0\pmod{d}$则$x-ay\equiv0\pmod{d}$则$b\equiv0\pmod{d}$$x\equivy\equiv$x%y$\equiv0\pmod{d}$又因为对于,都满足以上性质所以$\g......
  • MFC-GetExtendedStyle获取扩展样式
     DWORDExStyles=mylist4.GetExtendedStyle();//获取扩展样式DWORDoldstyle=mylist4.SetExtendedStyle(ExStyles|LVS_EX_FULLROWSELECT);//设置扩展样式/*指定的扩展样式LVS_EX_GRIDLINES//绘制表格LVS_EX_SUBITEMIMAGES//......
  • (Edge,Chrome)编写扩展应用,替代IE ActiveX插件
    资料来源#这次以Edge作为例子,Chrome其实也差不多Edge扩展应用资料:https://docs.microsoft.com/zh-cn/microsoft-edge/extensions-chromium用到的浏览器Api资料:https://developer.mozilla.org/zh-CN/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessagehttps://developer......
  • 浅谈Linux发展史
    今天,与大家渐渐分享一下Linux的发展史。在开始之前我们首先得了解一下Linux是什么?答案很简单,相信对它感兴趣的你,已经了解到它是一个操作系统。好了,我们进入本次的正题,Linux的发展史。大家有了解过世界上的第一台计算机吗?它的名字叫埃尼阿克,诞生于1946年2月14日,被用于计算导弹的弹......
  • 扩展卡尔曼滤波
    erf用于估计系统的状态,比如机器人的位姿、速度等信息,从而实现自主导航和控制扩展卡尔曼滤波(ExtendedKalmanFilter,EKF)是卡尔曼滤波的一种扩展形式,主要用于非线性系统的状态估计。与标准卡尔曼滤波不同的是,EKF使用非线性函数来预测和更新状态变量,因此需要通过一定的线性化处理来......
  • Spring 实现自定义 bean 的扩展
    Springmvc提供了扩展xml的机制,用来编写自定义的xmlbean,例如dubbo框架,就利用这个机制实现了好多的dubbobean,比如 <dubbo:application>、<dubbo:registry> 等等,只要安装这个标准的扩展方式实现配置即可。扩展自定义bean的意义何在假设我们要使用一个开源框架或者一套......
  • EAS_在扩展UICTEx中,打开弹窗,将参数传到弹窗页面中,
    这里有个需求:在扩展的UICTEx里的代码里,打开新的窗口,并传参过去 这里我们需要用到对象 BOSUIContext,现在UICTEx.java里将参数作为存到map,作为参数传过去,然后在打开的窗口的onload方法里就可以用 getUIContext().get("voucherId") 来获取值或对象 ......
  • 浅谈复杂业务系统的架构设计
    作者:京东科技 皮亮1.什么是复杂系统我们经常提到复杂系统,那么到底什么是复杂系统。我们看下维基的定义:复杂系统(英语:complexsystem),又称复合系统,是指由许多可能相互作用的组成成分所组成的系统。强调了两点:由点组成点之间有各种关联两点的规模和复杂性直接决定了系统的......
  • 浅谈机器学习的学习策略及技术应用
    导言:在科技飞速发展的今天,机器学习已成为人工智能领域的重要组成部分。作为一名程序员,掌握机器学习技术已经成为提升自身竞争力的必备技能。本文将从学习策略和技术应用两个方面,探讨机器学习的相关内容。一、学习策略加强基础知识:机器学习是建立在数学、统计学、计算机科学等多个学......
  • MFC-CListCtrl-SetExtendedStyle设置扩展风格
       mylist.SetExtendedStyle(LVS_SHOWSELALWAYS|LVS_EX_CHECKBOXES|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);//设置扩展风格风格看:https://www.cnblogs.com/liming19680104/p/17358671.html   ......