View Code of Problem 3494

#include <algorithm>
#include <cstring>
#include <iostream>
#include <string>
using namespace std;

int f(int a, int b)
{
    if (b != 0)
        return f(b, a % b);
    else
        return a;
}

int main()
{
    int a, b, c, d;
    char ch;
    int ans1, ans2, flag;
    while (scanf("%d/%d%c%d/%d", &a, &b, &ch, &c, &d) != EOF)
    {
        if (ch == '-')
            flag = -1;
        else
            flag = 1;
        if (b != d)
        {
            int tmp1=b, tmp2=d;
            b *= tmp2;
            a *= tmp2;
            c *= tmp1;
            d *= tmp1;
        }
        ans1 = a + flag * c;
        ans2 = b;
        int tmp = f(abs(ans1), abs(ans2));
        ans1 /= tmp;
        ans2 /= tmp;
        if(ans2 == 1 || ans1 == 0)
            printf("%d\n", ans1);
        else
            printf("%d/%d\n", ans1, ans2);
    }
}

Double click to view unformatted code.


Back to problem 3494