HDU2699 扩展欧几里德
//赤裸裸,不解释
#include<stdio.h>
typedef long long LL; //hdu需用int64
void gcd(int a,int 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(){
int a,b;
while(~scanf("%d%d",&a,&b)){
LL d,x,y;
gcd(a,b,d,x,y);
if(d==1){
while(x<0){ //这儿应该注意一下,解的通项为:(x+kb,y-ka) //k为任意整数
x+=b;
y-=a;
}
printf("%lld %lld\n",x,y);
}
else{
puts("sorry");
}
}
}
posted on 2013-06-26 13:01 Stomach_ache 阅读(122) 评论(0) 收藏 举报
浙公网安备 33010602011771号