소ê°� ¶
ë¬¸ì œê°€ 있길래 한번 ë�„ì „í•´ë´¤ìŠµë‹ˆë‹¤. 참여하는ë�° 다른 룰ì�´ 있는 것 ì�¸ì§€ ëª¨ë¥´ê² êµ°ìš”.
ìœ í�´ë¦¬ë“œí˜¸ì œë²•ì�„ 까먹어서 ê³ ë“±í•™êµ� ì •ì„�ì±…ì�„ ì°¸ê³
X, Y를 구하는 코드와 최대공약수를 구하는 코드를 합치는ë�° 시간ì�´ ê±¸ë ¸ìŠµë‹ˆë‹¤.
ìœ í�´ë¦¬ë“œí˜¸ì œë²•ì�„ 까먹어서 ê³ ë“±í•™êµ� ì •ì„�ì±…ì�„ ì°¸ê³

X, Y를 구하는 코드와 최대공약수를 구하는 코드를 합치는ë�° 시간ì�´ ê±¸ë ¸ìŠµë‹ˆë‹¤.
코드 ¶
~cpp
//Euclid Problem/��현 2005.04.03
#include <iostream>
using namespace std;
long Eucl(long, long);
long xy[2][2] = {{0,0},{0,1}};
int main(void){
long a, b, gcd;
cin >> a >> b;
bool isSwap = false;
if(a<b){ //a는 무조건 �수를 넣는다.
isSwap = true;
swap(a, b);
}
gcd = Eucl(a,b);
if(isSwap==true)
swap(xy[1][0],xy[1][1]);
cout << xy[1][0] << " " << xy[1][1] << " " << gcd <<"\n";
return 0;
}
long Eucl(long a, long b){ //a가 �수. a=bq+r공�� 변형 r=a-qb � �용하여 a,b� 계수 계산
if(a%b == 0)
return b;
long q = (a - a%b)/b;
long tx = xy[0][0], ty = xy[0][1];
xy[0][0] = xy[1][0];
xy[0][1] = xy[1][1];
if(tx==0 && ty==0){//첫시��면
xy[1][0] = 1, xy[1][1] = q*-1; //첫함수진입ì—�서 aì�˜ 계수는 ì–¸ì œë‚˜ 1ì�´ë‹¤.
}
else{
xy[1][0] = xy[0][0]*-1*q+tx; //ì�´ë²ˆí•¨ìˆ˜ì�˜ 몫q*-1ì�„ ê³±í•˜ê³ ì�´ì „ì�´ì „함수ì�˜ 계수를 ë�”한다.
xy[1][1] = xy[0][1]*-1*q+ty;
}
return Eucl(b, a%b);
}










