30分求助
  • 板块灌水区
  • 楼主vvautedSN第一魔怔人
  • 当前回复4
  • 已保存回复4
  • 发布时间2021/5/15 16:49
  • 上次更新2023/11/4 23:14:02
查看原帖
30分求助
486187
vvautedSN第一魔怔人楼主2021/5/15 16:49

题目描述

读入四个整数a、b、c、d。看成二个分数a/b,c/d,求这两个分数之和

输入格式

四个整数a、b、c、d(1≤a,b,c,d≤10000)。

输出格式

一行,即两个分数之和

注意:必须按照样例格式输出,如果遇到某一部分为0,则不输出该部分!

样例

样例输入

3 2 1 6

样例输出

3/2+1/6=1+2/3

我的程序:

#include <bits/stdc++.h>
using namespace std;
struct fs {
    long long c, m;
};
long long gcd(long long a, long long b) {
    while (a % b != 0) {
        long long c = a % b;
        a = b;
        b = c;
    }
    return b;
}
int main() {
    fs a, b, ans;
    long long ansn;
    scanf("%lld%lld%lld%lld", &a.c, &a.m, &b.c, &b.m);
    ans.c = a.c * b.m + b.c * a.m;
    ans.m = b.m * a.m;
    ansn = ans.c / ans.m;
    ans.c %= ans.m;
    printf("%lld/%lld+%lld/%lld=", a.c, a.m, b.c, b.m);
    if (ans.c) {
        ans.c /= gcd(ans.m, ans.c);
        ans.m /= gcd(ans.m, ans.c);
    }
    if (ansn) {
        printf("%lld", ansn);
        if (ans.c)
            printf("+%lld/%lld", ans.c, ans.m);
    } else {
        if (ans.c)
            printf("%lld/%lld", ans.c, ans.m);
        else
            printf("0");
    }
}
2021/5/15 16:49
加载中...