标签:
Description
Input
Output
Sample Input
77 51 10 44 34 79
Sample Output
2 -3 sorry 7 -3
分析:ax+by=gcd(a,b)*k,只有k为整数时,才有解,所以当前仅当gcd(a,b)=1时,这道题有解。
当求解出x<0时,利用
(x+b/gcd(a,b),y-a/gcd(a,b) 都是符合条件的解这一性质,找到第一个符合条件的x输出之。
#include<iostream> #include<stdio.h> using namespace std; long long ext_gcd(long long a,long long b,long long *x,long long *y) { if(b==0) { *x=1; *y=0; return a; } long long r = ext_gcd(b,a%b,x,y); long long t = *x; *x=*y; *y=t - a/b * *y; return r; } int main() { long long a,b,x,y; while(~scanf("%I64d%I64d",&a,&b)) { if(ext_gcd(a,b,&x,&y)==1) { while(x<0) { x+=b/1; y-=a/1; } printf("%I64d %I64d\n",x,y); continue; } else printf("sorry\n"); } return 0; }
标签:
原文地址:http://www.cnblogs.com/superxuezhazha/p/5768443.html