Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define boAshraf ios_base::sync_with_stdio(false); cin.tie(NULL);
- #define ll long long
- #define sz(s) (int)(s).size()
- #define all(s) (s).begin(),(s).end()
- using namespace std;
- void File();
- void sol();
- int main() {
- boAshraf
- File();
- int t = 1;
- cin >> t;
- while (t--) {
- sol();
- }
- return 0;
- }
- void sol() {
- auto add=[&](ll num, ll denum, ll a, ll b)->pair<ll,ll> {
- ll numerator = num * b + a * denum;
- ll denominator = denum * b;
- ll g = __gcd(numerator, denominator);
- return {numerator / g, denominator / g};
- };
- auto valid=[&](ll cost,ll d,ll e)->bool{
- return d*cost<=e;
- };
- ll d,e;
- cin>>d>>e;
- ll num=0,denum=1;
- ll cost=1;
- for(int i=1;i<=30 && d;i++){
- ll l=1,r=min(d,e/cost),ans=r;
- while(l<=r){
- ll mid=(l+r)/2;
- if(valid(cost*2,d-mid,e-cost*mid))ans=mid,r=mid-1;
- else l=mid+1;
- }
- d-=ans;
- e-=cost*ans;
- tie(num,denum)=add(num,denum,ans,i);
- cost*=2;
- }
- cout<<num<<' '<<denum<<'\n';
- }
- void File() {
- freopen("marathon.in", "r", stdin);
- }
Advertisement
Add Comment
Please, Sign In to add comment