您的位置:首页 > 其它

UVA 10104 - Euclid Problem

2013-04-06 21:26 309 查看
题目大意:AX+BY=D,D是A,B的最大公约数,要求出满足条件的X,Y,要求|X|+|Y| 最小,并且X<=Y
思路分析:扩展欧几里得模版题

AC Code:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
using namespace std;

typedef long long LL;
void gcd(LL a,LL b,LL& d,LL& x,LL& y)
{
if(!b)
{
d=a;
x=1;
y=0;
}
else
{
gcd(b,a%b,d,y,x);
y-=x*(a/b);
}
}
int main()
{
LL a,b,d,x,y;
while(cin>>a>>b)
{
gcd(a,b,d,x,y);
cout<<x<<" "<<y<<" "<<d<<endl;
}
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: