Submission

Status:

P-TTTTTTT-

Subtask/Task Score:

10/100

Score: 10

User: tha_smith

Problemset: Fraction

Language: cpp

Time: 1.098 second

Submitted On: 2025-10-09 22:14:21

#include <iostream>
using namespace std;

void divided(int a, int b, int aa, int bb, int num[]) {
    int tb=b,tbb=bb;
    //cout << a << " " << b << " " << aa << " " << bb << endl;
    if(b!=bb) {
        if(b>bb) {
            if(b%bb==0) {
               bb *= (tb/tbb);
               aa *= (tb/tbb);
               num[0] = a; num[1] = b; num[2] = aa; num[3] = bb;
            }
            else {
               a = a*tbb;
               b = tb*tbb;
               aa = aa*tb;
               bb = tb*tbb;
               num[0] = a; num[1] = b; num[2] = aa; num[3] = bb;
            }
        }
        else {
            if(bb%b==0) {
               a *= (tbb/tb);
               b *= (tbb/tb);
               num[0] = a; num[1] = b; num[2] = aa; num[3] = bb;
            }
            else {
               a = a*tbb;
               b = tb*tbb;
               aa = aa*tb;
               bb = tb*tbb;
               num[0] = a; num[1] = b; num[2] = aa; num[3] = bb;
            }
        }
    }
    else {
        num[0] = a; num[1] = b; num[2] = aa; num[3] = bb;
    }
    //cout << a << " " << b << " " << aa << " " << bb << endl;
}

void dividable(int ra,int rb,int num[]) {
    if(ra%rb==0) {
    	ra = ra/rb;
    	rb = 1;
	}  
    else if(ra>rb) {
        for(int i=ra; i>0; i--) {
            if(ra%i==0 && rb==0) {
                ra/=i;
                rb/=i;
                break;
            }
        }
    }
    else if(ra<rb) {
        for(int i=rb; i>0; i--) {
            if(ra%i==0 && rb==0) {
                ra/=i;
                rb/=i;
                break;
            }
        }
    }
    else if(ra==rb) {
        ra = 1;
        rb = 1;
    }
    cout << ra << ' ' << rb << endl;
    num[0] = ra;
    num[1] = rb;
}

int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    int a,b,N;
    cin >> a >> b >> N;
    int num[4];
    num[0]=a; num[1]=b;
    for(int i=0; i<N; i++) {
        char cc; int aa,bb;
        cin >> cc >> aa >> bb;
        if(cc=='+') {
            divided(num[0],num[1],aa,bb,num);
            int ra = num[0]+num[2];
            int rb = num[1];
            dividable(ra,rb,num);
            //cout << num[0] << " " << num[1] << endl;
        }
        else if(cc=='-') {
            divided(num[0],num[1],aa,bb,num);
            int ra = num[0]-num[2];
            int rb = num[1];
            dividable(ra,rb,num);
            //cout << num[0] << " " << num[1] << endl;
        }
        else if (cc=='*') {
            //cout << num[0] << ' ' << aa << ' ' << num[1] << ' ' << bb << endl;
            int ra = num[0] * aa;
            int rb = num[1] * bb;
            //cout << ra << ' ' << rb;
            dividable(ra,rb,num);
            //cout << num[0] << " " << num[1] << endl;
        }
        else if (cc=='/') {
            int ra = num[0] * bb;
            int rb = num[1] * aa;
            dividable(ra,rb,num);
            //cout << num[0] << " " << num[1] << endl;
        }
    }
}