算法求解了不定方程 ax+by=gcd(a,b) (1) 的一组解x0,y0
void gcd(int a,int b,int &d,int &x,int &y){
if(b==0){
d=a; x=1,y=0; return ;
}
gcd(b,a%b,d,y,x); y-=x*(a/b);
}
问题 解不定方程 ax+by=c (2)
令g=gcd(a,b)
结论:
ax+by=c 有解须满足 c=k*g ,若已知方程 ax+by=g 一组解 x0,y0, 原方程对应解为 (x0*k,y0*k)
该结论作为桥梁连接了(1)(2)两个方程; 简单说就是一个倍数关系
求任意解
ax+by=c 若已知一组解x0,y0, 任意解 (x0+k*b/g , y-k*a/g)
如果求最小整数解,%mod即可
x=(x%mod+mod)%mod
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!