http://acm.hdu.edu.cn/showproblem.php?pid=2669
//欧几里德算法(Euclid) #include <iostream> using namespace std; int exgcd(int a, int b, int &x, int &y)//辗转相除法求最大公约数GCD { if(b == 0) { x = 1; y = 0; return a; } int r = exgcd(b, a % b, x, y); int t = x; x = y; y = t - a / b * y; return r; } int main() { int m,n,a,b,r; while(scanf("%d%d",&a,&b)+1) { r=exgcd(a,b,m,n); if(r==1)//最大公约数为1时 { while(m<0) { m+=b; n-=a; } printf("%d %d\n",m,n); } else printf("sorry\n"); } return 0; }
|