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

Popular posts from this blog

URI Problem 1001 Solution Extremely Basic - - URI Online Judge Solution

URI Online Judge Problem 1001 Extremely Basic Solution using C, Python Programming Language. Read 2 variables, named  A  and  B  and make the sum of these two variables, assigning its result to the variable  X . Print  X  as shown below. Print endline after the result otherwise you will get “ Presentation Error ”. Input The input file will contain 2 integer numbers. Output Print the letter  X  (uppercase) with a blank space before and after the equal signal followed by the value of X, according to the following example. Obs.: don't forget the endline after all. Samples Input Samples Output 10 9 X = 19 -10 4 X = -6 15 -7 X = 8 URI 1001 Solution in Python A = int(input()) B = int(input()) X = A + B print("X =",X); URI 1001 Solution in C: #include int main() { int A,B,X; scanf ("%d %d", &A, &B); X=A+B; printf("X = %d\n",X); return 0; }

URI Online Judge Solution 1151 Easy Fibonacci

URI Online Judge Solution 1151 Easy Fibonacci using C Programming Language. he following sequence of numbers 0 1 1 2 3 5 8 13 21 ... is known as the Fibonacci Sequence. Thereafter, each number after the first 2 is equal to the sum of the previous two numbers. Write an algorithm that reads an integer N (N < 46) and that print the first N numbers of this sequence. Input The input file contains an integer number N (0 < N < 46). Output The numbers ​​should be printed on the same line, separated by a blank space. There is no space after the last number. Thanks to Cássio F. Input Sample Output Sample 5 0 1 1 2 3 Solution using C : #include <stdio.h> int main() {     int n,i,n1,n2,t;     scanf("%d",&n);     for(i=1; i<=n; i++)     {         if(i==1)         {         ...

URI Problem 1186 Solution Below the Secundary Diagonal - URI Online Judge Solution

URI Online Judge Solution 1186 Below the Secundary Diagonal   Using C, Python Programming Language. Read an uppercase character that indicates an operation that will be performed in an array M[12][12]. Then, calculate and print the sum or average considering only that numbers that are below of the Secundary diagonal of the array, like shown in the following figure (green area). Input The first line of the input contains a single uppercase character O ('S' or 'M'), indicating the operation Sum or Average (Média in portuguese) to be performed with the elements of the array. Follow 144 floating-point numbers of the array. Output Print the calculated result (sum or average), with one digit after the decimal point. Input Sample Output Sample S 5.0 0.0 -3.5 2.5 4.1 ... 12.6 Solution Using C: #include <stdio.h> int main() {     double a=0.0, M[12][12];     char T[2];     int x,y,c=0;     scanf("%s", &T);     for(x=0;x<=1...