#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
// p/x<b/c<p/(x-1)
//傳參數代表的值
void solve(ll pa,ll pb,ll qa,ll qb,ll &x,ll &y){
ll z=(pa+pb-1)/pb;//得到向上整除的部分
if(z<=qa/qb){
x=z,y=1;
return;
}
pa-=(z-1)*pb,qa-=(z-1)*qb;
solve(qb,qa,pb,pa,y,x);//對整個式子取倒數
x+=(z-1)*y;
}
int main(){
int t;
cin>>t;
ll p,a,x,y;
while(t--){
scanf("%lld%lld",&p,&a);
solve(p,a,p,a-1,x,y);
printf("%lld/%lld\n",x*a-p*y,x);
}
}
HDU6624(輾轉相除法)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.