题目描述
读入四个整数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");
}
}