这道题还是不太明白
开学后要去问一问巨佬们
#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