Submission
Status:
PP------PP
Subtask/Task Score:
40/100
Score: 40
User: APNICHANAN
Problemset: Fraction
Language: cpp
Time: 0.004 second
Submitted On: 2025-10-08 19:20:12
#include <iostream>
using namespace std;
int gcd(int a, int b)
{
if (b == 0)
return a;
else
return gcd(b, a % b);
}
int main()
{
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 / b;
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;
}
}
}