#44200: c answer


suyueh (suyueh)

學校 : 不指定學校
編號 : 272111
來源 : [101.12.162.212]
最後登入時間 :
2024-11-10 22:20:41
b538. 分數運算-2 -- 分數四則 | From: [111.242.18.129] | 發表日期 : 2024-11-11 19:55

#include <stdio.h>
#define SWAP(x, y) x^=(y^=(x^=y))

int gcd(int m, int n)
{
    while (n)
    {
        m %= n;
        SWAP(m, n);
    }
    return m;
}

int main()
{
    int a, b, c, d, e, f, g;
    char op;
    while (scanf(" %d %d %d %d %c", &a, &b, &c, &d, &op) == 5)
    {
        switch (op)
        {
        case '+':
            e = a * d + c * b;
            f = b * d;
            break;
        case '-':
            e = a * d - c * b;
            f = b * d;
            break;
        case '*':
            e = a * c;
            f = b * d;
            break;
        case '/':
            e = a * d;
            f = b * c;
            break;
        default:
            break;
        }
        g = gcd(e, f);
        e /= g, f /= g;
        if (f < 0)
        {
            e = -e;
            f = -f;
        }
        if (f == 1)
            printf("%d\n", e);
        else
            printf("%d/%d\n", e, f);
    }
    return 0;
}

 
ZeroJudge Forum