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:55:50
#include <bits/stdc++.h>
#define pii pair<int,int>
using namespace std;
int cur_a,cur_b;
int gcd(int a,int b){
if (a%b == 0) return b;
return gcd(b,a%b);
}
int lcm(int a,int b){
return a*b/gcd(a,b);
}
pii down_num(int a,int b){
int tgcd = gcd(a,b);
return make_pair(a/tgcd,b/tgcd);
}
pii pls(int a,int b){
int bottom = lcm(cur_b,b);
int top = (bottom/cur_b*cur_a)+(bottom/b*a);
cur_a = top;
cur_b = bottom;
return down_num(cur_a,cur_b);
}
pii mns(int a,int b){
int bottom = lcm(cur_b,b);
int top = (bottom/cur_b*cur_a)-(bottom/b*a);
cur_a = top;
cur_b = bottom;
return down_num(cur_a,cur_b);
}
pii mul(int a,int b){
int bottom = cur_b*b;
int 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;
int n;cin>>n;
for (int i = 0;i<n;i++){
char op;int 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;
}
cout << cur_a << ' ' << cur_b << '\n';
}
}