二元一次不定方程的整数解(扩展欧几里得算法)

使用扩展欧几里得算法求解二元一次不定方程整数解
本文介绍了如何使用扩展欧几里得算法来寻找二元一次不定方程的整数解,包括如何找到最小非负整数解、最小绝对值解、最小/mx+ny/解以及x和y均为正数时的最小/mx+ny/解。通过实例解析了具体解题步骤和策略。

二元一次不定方程的整数解(扩展欧几里得算法)

(不得不说这是一堂数学*信竞课)

整数解解法

ax\equivc(mod b)或ax+by=c有整数解当且仅当(a,b)|c

一般意义下的解法:

欧拉函数

扩展欧几里得算法

代码实现

exgcd返回值为(a,b)

int exgcd(int a,int b,int &x,int &y)
{
	if(!b)
	{
		x=1,y=0;
		return a;
	}
	int r=exgcd(b,a%b,y,x);
	y-=x*(a/b);
	return r;
}

(x,y为特解)

通解:

符合要求的特解的寻找

 例1. x最小的非负整数值 

解:找到x最接近于0的点后往前后枚举

2. |x+y|最小的解

解:将ax+by=c化成y=kx+b,那么|x+y|=|(k+1)x+b|,写出分段函数(两段)

3. m|x|+n|y|最小/大的解

解:m|x|+n|y|=m|x|+n|kx+b|,写出分段函数(最多三段)

4. x,y均为正数,mx+ny最小/

解:mx+ny=(kn+m)x+bn,根据kn+m的正负性讨论即可。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值