您的位置:首页 > 其它

HDU 2669 扩展欧几里得

2015-05-31 14:56 260 查看
#include <iostream>
#include <cstdio>
using namespace std;
typedef long long LL;
LL gcd(LL a, LL b)
{
return b ? gcd(b,a%b) : a;
}
void exgcd(LL a ,LL b,LL &x ,LL &y)
{
if(b==0)
{
x=1;
y=0;
return ;
}
exgcd(b,a%b,x,y);
LL tmp=x;
x=y;
y=tmp-(a/b)*y;
}
int main()
{
LL a,b;
while(~scanf("%lld%lld",&a,&b))
{
LL w=gcd(a,b);
if(w!=1)
printf("sorry\n");
else
{
LL x,y;
exgcd(a,b,x,y);
x=(x%b+b)%b;
y=(1-a*x)/b;
printf("%lld %lld\n",x,y);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: