Submission

Status:

PP------PP

Subtask/Task Score:

40/100

Score: 40

User: Quinruj

Problemset: Fraction

Language: cpp

Time: 0.002 second

Submitted On: 2025-10-13 11:58:30

#include <bits/stdc++.h>
#define ll long long
#define pii pair<ll,ll>
using namespace std;

ll cur_a,cur_b;

ll gcd(ll a,ll b){
    if (a%b == 0) return b;
    return gcd(b,a%b);
}

ll lcm(ll a,ll b){
    return a*b/gcd(a,b);
}

pii down_num(ll a,ll b){
    ll tgcd = gcd(a,b);
    return make_pair(a/tgcd,b/tgcd);
}

pii pls(ll a,ll b){
    ll bottom = lcm(cur_b,b);
    ll top = (bottom/cur_b*cur_a)+(bottom/b*a);
    cur_a = top;
    cur_b = bottom;
    return down_num(cur_a,cur_b);
}

pii mns(ll a,ll b){
    ll bottom = lcm(cur_b,b);
    ll top = (bottom/cur_b*cur_a)-(bottom/b*a);
    cur_a = top;
    cur_b = bottom;
    return down_num(cur_a,cur_b); 
}

pii mul(ll a,ll b){
    ll bottom = cur_b*b;
    ll top = cur_a*a;
    cur_a = top;
    cur_b = bottom;
    return down_num(cur_a,cur_b); 
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    cin>>cur_a>>cur_b;
    ll n;cin>>n;
    for (ll i = 0;i<n;i++){
        char op;ll a,b;cin>>op>>a>>b;
        if (op == '+') {
            pii p = pls(a,b);
            cur_a = p.first;
            cur_b = p.second;
        }
        else if (op == '-'){
            pii p = mns(a,b);
            cur_a = p.first;
            cur_b = p.second;
        }
        else if (op == '*'){
            pii p = mul(a,b);
            cur_a = p.first;
            cur_b = p.second;
        }
        else {
            pii p = mul(b,a);
            cur_a = p.first;
            cur_b = p.second;
        }
        if (cur_b == 0) cur_b = 1;
        cout << cur_a << ' ' << cur_b << '\n';
    }
    
}