HDU 4180 RealPhobia

这道题还是不太明白

开学后要去问一问巨佬们

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
inline long long read(){
	long long x=0,f=1,ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
	return x*f;
}
inline long long exgcd(long long a,long long b,long long &x,long long &y){
	if(b==0){
		x=1;y=0;
		return a;
	}
	long long d=exgcd(b,a%b,y,x);
	y-=a/b*x;
	return d;
}
int main(){
	long long T=read();
	while(T--){
		long long a=read(),b=read(),x,y;
		long long d=exgcd(a,b,x,y);
		if(a==1) printf("%lld/%lld\n",a,b-1);
		else if(d!=1) printf("%lld/%lld\n",a/d,b/d);
		else{
			long long c1=(-y+a)%a;
			long long d1=(x+b)%b;
			long long c2=(y+a)%a;
			long long d2=(-x+b)%b;
			if (d1>d2) printf("%lld/%lld\n",c1,d1);
			else printf("%lld/%lld\n",c2,d2);
		}
	}
	return 0;
}

  

猜你喜欢

转载自www.cnblogs.com/gcyyzf/p/10355630.html
hdu