解析
扩展欧几里得算法
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define inf 0x3f3f3f3f
const int N=2e5+5;
int a,b,c,x,y;
int exgcd(int a,int b, int &x, int &y){
if(!b){
x=1,y=0;
return a;
}
int d=exgcd(b,a%b,y,x);
y-=(a/b)*x;
return d;
}
void solve(){
cin>>a>>b>>c;
int p=exgcd(a,b,x,y);
if(c%p!=0){
cout<<-1;
return;
}
x*=c/p;
y*=c/p;
int u=b/p;
x=(x%u+u)%u;
y=(c-a*x)/b;
if(y<0) cout<<-1;
else cout<<x<<" "<<y;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int t=1;
// cin>>t;
while(t--) solve();
return 0;
}