Submission

Status:

PP------PP

Subtask/Task Score:

40/100

Score: 40

User: APNICHANAN

Problemset: Fraction

Language: cpp

Time: 0.003 second

Submitted On: 2025-10-08 19:25:25

#include <iostream>
using namespace std;
int gcd(int a, int b)
{
    if (b == 0)
        return a;
    else
        return gcd(b, a % b);
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int a, b, n;
    cin >> a >> b >> n;
    int x[n], y[n];
    char o[n];
    for (int i = 0; i < n; i++)
        cin >> o[i] >> x[i] >> y[i];
    int lcm, gcdab;
    for (int i = 0; i < n; i++)
    {
        if (o[i] == '+')
        {
            lcm = (y[i] * b) / gcd(y[i], b);
            a *= lcm / b;
            x[i] *= lcm / y[i];
            b = lcm;
            a += x[i];
            gcdab = gcd(a, b);
            a /= gcdab;
            b /= gcdab;
            if (b < 0)
            {
                b = abs(b);
                a -= a * 2;
            }
            if (a == 0)
                a = 0, b = 1;
            cout << a << " " << b << endl;
        }
        else if (o[i] == '-')
        {
            lcm = (y[i] * b) / gcd(y[i], b);
            a *= lcm / b;
            x[i] *= lcm / y[i];
            b = lcm;
            a -= x[i];
            gcdab = gcd(a, b);
            a /= gcdab;
            b /= gcdab;
            if (b < 0)
            {
                b = abs(b);
                a *= -1;
            }
            if (a == 0)
                a = 0, b = 1;
            cout << a << " " << b << endl;
        }
        else if (o[i] == '*')
        {
            a *= x[i];
            b *= y[i];
            gcdab = gcd(a, b);
            a /= gcdab;
            b /= gcdab;
            if (b < 0)
            {
                b = abs(b);
                a *= -1;
            }
            if (a == 0)
                a = 0, b = 1;
            cout << a << " " << b << endl;
        }
        else if (o[i] == '/')
        {
            a *= y[i];
            b *= x[i];
            gcdab = gcd(a, b);
            a /= gcdab;
            b /= gcdab;
            if (b < 0)
            {
                b = abs(b);
                a *= -1;
            }
            if (a == 0)
                a = 0, b = 1;
            cout << a << " " << b << endl;
        }
    }
}