ax+by=dax1+by1=cx1=x∗cgcd(a,b),y1=y∗cgcd(a,b)对于最小正整数解有:x1+λbgcd(a,b)>0y1−λagcd(a,b)>0解得:⎡⎢
⎢
⎢⎢−x1+1bgcd(a,b)⎤⎥
⎥
⎥⎥≤λ≤⌊y1−1agcd(a,b)⌋
#include<cstdio>
#include<cmath>
using namespace std;
typedef long long ll;
inline int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')f=-1;
ch=getchar();
}
while('0'<=ch&&ch<='9')x=(x<<3)+(x<<1)+ch-48,ch=getchar();
return x*f;
}
ll exgcd(ll a,ll b,ll &x,ll &y){
if(b==0){
x=1,y=0;
return a;
}
ll d=exgcd(b,a%b,y,x);
y-=a/b*x;
return d;
}
int main(){
int T;
ll a,b,c,d,x,y,tmp,l,r,X,Y;
T=read();
while(T--){
a=read(),b=read(),c=read();
d=exgcd(a,b,x,y);
if(c%d!=0){
puts("-1");
continue;
}
tmp=c/d;
x*=tmp,y*=tmp;
l=ceil((double)(-x+1)/(double)(b/d));
r=floor((double)(y-1)/(double)(a/d));
if(l>r){
printf("%lld %lld\n",x+l*(b/d),y-r*(a/d));
}
else{
printf("%lld ",(r-l+1));
X=x+l*(b/d);
Y=y-r*(a/d);
printf("%lld %lld ",X,Y);
printf("%lld %lld\n",(c-b*Y)/a,(c-a*X)/b);
}
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】