Skip to main content

URI Problem 1022 Solution TDA Rational - URI Online Judge Solution



URI Online Judge Solution 1022 TDA Rational using Python Programming Language.
You were invited to do a little job for your Mathematic teacher. The job is to read a Mathematic expression in format of two rational numbers (numerator / denominator) and present the result of the operation. Each operand or operator is separated by a blank space. The input sequence (each line) must respect the following format: number, (‘/’ char), number, operation char (‘/’, ‘*’, ‘+’, ‘-‘), number, (‘/’ char), number. The answer must be presented followed by ‘=’ operator and the simplified answer. If the answer can’t be simplified, it must be repeated after a ‘=’ operator.
Considering N1 and D1 as numerator and denominator of the first fraction, follow the orientation about how to do each one of these 4 operations:
Sum: (N1*D2 + N2*D1) / (D1*D2)
Subtraction: (N1*D2 - N2*D1) / (D1*D2)
Multiplication: (N1*N2) / (D1*D2)
Division: (N1/D1) / (N2/D2), that means (N1*D2)/(N2*D1)

Input

The input contains several cases of test. The first value is an integer N (1 ≤ N ≤ 1*104), indicating the amount of cases of test that must be read. Each case of test contains a rational value X (1 ≤ X ≤ 1000), an operation (-, +, * or /) and another rational value Y (1 ≤ Y ≤ 1000).

Output

The output must be a rational number, followed by a “=“ sign and another rational number, that is the simplification of the first value. In case of the first value can’t be simplified, the same value must be repeated after the ‘=’ sign.
Input SampleOutput Sample
4
1 / 2 + 3 / 4
1 / 2 - 3 / 4
2 / 3 * 6 / 6
1 / 2 / 3 / 4
10/8 = 5/4
-2/8 = -1/4
12/18 = 2/3
4/6 = 2/3

URI 1022 Solution in C :

def GetDivisor(X,Y):
    Divisor = Dividendo = Z = 0
    if X == 0:
        return 1
    if Y>X:
        Dividendo = Y;
        Divisor = X;
    else:
        Dividendo = X;
        Divisor = Y;
    while (Dividendo % Divisor != 0):
        Z = Dividendo % Divisor
        Dividendo = Divisor;
        Divisor = Z;

    return Divisor;

T = int(input())
while T>0:
    N1,C1, D1,C2, N2,C3, D2 = map(str,input().split())
    N1 = int(N1)
    N2 = int(N2)
    D1 = int(D1)
    D2 = int(D2)
    if C2 == '+':
        Numerator = ((N1 * D2) + (N2 * D1));
        Denominator = (D1 * D2);
    elif C2 == '-':
        Numerator = ((N1 * D2) - (N2 * D1));
        Denominator = (D1 * D2);
    elif C2=='*':
        Numerator = (N1 * N2);
        Denominator = (D1 * D2);
    else:
        Numerator = (N1 * D2);
        Denominator = (N2 * D1);

    D = GetDivisor(Numerator, Denominator)

    NumeratorSum = Numerator / D
    DenominatorSum = Denominator / D

    if NumeratorSum > 0 and DenominatorSum > 0:
       print("%i/%i=%i/%i"%(Numerator,Denominator,NumeratorSum,DenominatorSum))
    else:
        if DenominatorSum < 0:
            DenominatorSum = -DenominatorSum;
            NumeratorSum = -NumeratorSum;

       print("%i/%i=%i/%i"%(Numerator,Denominator,NumeratorSum,DenominatorSum))

    T-=1

Comments