题意:
 
给定A,B,C,表示有一条方程为Ax+By+C=0的直线。 问是否存在一个点(x,y),满足x和y都是整数,且在直线上。 如果无解输出-1,否则输出一组解。
 
数据范围:-2e9<=A,B,C<=2e9
 
解法:
 
式子改为Ax+By=-C,发现就是个同余方程, 那么问题变为求同余方程的一组整数解,上exgcd即可。
 
设d=gcd(A,B),有解的条件是C能被d整除。
 
code:
 
#include<bits/stdc++.h>
using namespace std
;
#define int long long
const int maxm
=1e5+5;
int exgcd(int a
,int b
,int &x
,int &y
){
    if(b
==0){
        x
=1,y
=0;
        return a
;
    }
    int d
=exgcd(b
,a
%b
,y
,x
);
    y
-=a
/b
*x
;
    return d
;
}
signed main(){
    int A
,B
,C
;cin
>>A
>>B
>>C
;
    int x
,y
;
    C
=-C
;
    int d
=exgcd(A
,B
,x
,y
);
    if(C
%d
)cout
<<-1<<endl
;
    else{
        x
*=C
/d
;
        y
*=C
/d
;
        cout
<<x
<<' '<<y
<<endl
;
    }
    return 0;
}