Đề bài: Một đường thẳng trên mặt phẳng được mô tả bằng phương trình $Ax+By+C=0$. Bạn phải tìm bất kỳ điểm nào trên đường thẳng này, thỏa mãn tọa độ của những điểm này nguyên từ -5.10^(18) đến 5.10^(18), hoặc chỉ ra rằng không có điểm nào như vậy thỏa mãn.
Đầu vào:
+ Dòng đầu tiên chứa 3 số nguyên A,B và C (-2.10^(9)<=A,B,C<=2.10^(9))- tương ứng với hệ số của phương trình đường thẳng trên. Nó được đảm bào rằng $A^2+B^2>0$.
Đầu ra:
+ Nếu có điểm tồn tại, in ra tọa độ của điểm đó, ngược lại in ra -1.
Ví dụ:
Đầu vào:
2 5 3
Đầu ra:
6 -3
Hướng dẫn:
Lời giải:
#include<cstdio> typedef long long ll; ll a,b,c,d,x,y; void exgcd(ll a,ll b,ll& x,ll& y) { if(!b){d=a,x=1,y=0;}else{exgcd(b,a%b,y,x);y-=x*(a/b);} } int main() { scanf("%I64d%I64d%I64d",&a,&b,&c);c=-c; exgcd(a,b,x,y); if(c%d!=0)return puts("-1"),0;else printf("%I64d %I64d\n",x*c/d,y*c/d); }
Không có nhận xét nào:
Đăng nhận xét