这道题还是不太明白
开学后要去问一问巨佬们
#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;
}
原文:https://www.cnblogs.com/gcyyzf/p/10355630.html