Submission
Status:
PPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: mfs
Problemset: Fraction
Language: cpp
Time: 0.002 second
Submitted On: 2025-10-07 16:21:55
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int gcd(int a, int b) {
return __gcd(a,b);
}
int lcm(int a, int b) {
return a*b/__gcd(a,b);
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
ll a0,b0; cin >> a0 >> b0;
int q; cin >> q;
while (q--) {
char op; cin >> op;
ll a1,b1; cin >> a1 >> b1;
ll res;
if (op == '+') {
if (b0 == b1) {
res = a0+a1;
if (res == 0) {
cout << 0 << ' ' << 1 << '\n';
a0 = 0, b0 = 1;
} else {
cout << res/gcd(res,b0) << ' ' << b0/gcd(res,b0) << '\n';
a0 = res/gcd(res,b0), b0 = b0/gcd(res,b0);
}
}
else {
ll mul = b0*b1;
res = (a0*(mul/b0)+a1*(mul/b1));
if (res == 0) {
cout << 0 << ' ' << 1 << '\n';
a0 = 0, b0 = 1;
} else {
cout << res/gcd(res,mul) << ' ' << mul/(gcd(res,mul)) << '\n';
a0 = res/gcd(res,mul), b0 = mul/(gcd(res,mul));
}
}
} else if (op == '-') {
if (b0 == b1) {
res = a0-a1;
if (res == 0) {
cout << 0 << ' ' << 1 << '\n';
a0 = 0, b0 = 1;
} else {
cout << res/gcd(res,b0) << ' ' << b0/gcd(res,b0) << '\n';
a0 = res/gcd(res,b0), b0 = b0/gcd(res,b0);
}
}
else {
ll mul = b0*b1;
res = (a0*(mul/b0)-a1*(mul/b1));
if (res == 0) {
cout << 0 << ' ' << 1 << '\n';
a0 = 0, b0 = 1;
} else {
cout << res/gcd(res,mul) << ' ' << mul/(gcd(res,mul)) << '\n';
a0 = res/gcd(res,mul), b0 = mul/(gcd(res,mul));
}
}
} else if (op == '*') {
ll up = a0*a1, down = b0*b1;
cout << up/(gcd(abs(up),down)) << ' ' << down/(gcd(abs(up),down)) << '\n';
a0 = up/(gcd(abs(up),down)), b0 = down/(gcd(abs(up),down));
} else if (op == '/') {
ll up = abs(a0*b1), down = abs(b0*a1);
if ((a0 < 0 && a1 > 0) || (a0 > 0 && a1 < 0)) up = -up;
cout << up/(gcd(abs(up),down)) << ' ' << down/(gcd(abs(up),down)) << '\n';
a0 = up/(gcd(abs(up),down)), b0 = down/(gcd(abs(up),down));
}
}
}