扩展欧几里得

扩展欧几里得算法

对于 ax+by=m, 可用 exgcd 求出 d=gcd(a,b)

  1. dm ,无解

  2. dm, 则 exgcd 可解出 ax+by=d 的两个解 xx,yy

    a=ad,b=bd,m=md

    ax+by=m 的两个解为 x0=xxm,y0=yym

    特解为 x=x0+tb,y=y0+ta

    x0,y0 为最靠近 0 的一对解, 因此若 x0<0, 则令 x0=x0+b 即可得到最小非负整数解

模板

ll exgcd(ll a, ll b, ll &x, ll &y)
{
	if (b == 0)
	{
		x = 1, y = 0;
		return a;
	}
	ll xx, yy;
	ll d = exgcd(b, a % b, xx, yy);
	x = yy, y = xx - a / b * yy;
	return d;
}
posted @   hzy0227  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示