Submission

Status:

PP------PP

Subtask/Task Score:

40/100

Score: 40

User: monpluk

Problemset: Fraction

Language: cpp

Time: 0.004 second

Submitted On: 2025-10-07 09:07:15

#include <iostream>
using namespace std;

int gcd(int a,int b){
    if(a<0){
        a*=-1;
    }
    if(b<0){
        b*=-1;
    }
    if(a == 1 || b == 1){
        return 1;
    }
    if(a == b){
        return a;
    }
    if(a > b){
        return gcd(a-b,b);
    }
    if(b > a){
        return gcd(a,b-a);
    }
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int a,b,n,A[1001],B[1001];
    cin >> a >> b >> n;
    for(int i=0;i<n;i++){
        char c;
        int g,p,q;
        cin >> c >> p >> q;
        if(c == '+'){
            a = a*q + b*p;
            b = b*q;
        }
        if(c == '-'){
            a = a*q - b*p;
            b = b*q;
        }
        if(c == '*'){
            a = a*p;
            b = b*q;
        }
        if(c == '/'){
            a = a*q;
            b = b*p;
        }
        if(a == 0){
            A[i] = 0;
            B[i] = 1;
            a = 0;
            b = 1;
            continue;
        }
        if(b < 0){
            a *= -1;
            b *= -1;
        }
        g = gcd(a,b);
        a = a/g;
        b = b/g;
        A[i] = a;
        B[i] = b;
    }
    for(int i=0;i<n;i++){
        cout << A[i] << " " << B[i] << '\n';
    }
}