1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #include <bits/stdc++.h> using namespace std; typedef long long ll;
ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }
ll lcm(ll a, ll b) { return 1ll * a * b / gcd(a, b); }
int main() { bool flag = 0; ll ra = 0, rb = 1, a, b, tmp; while (~scanf("%lld/%lld", &a, &b)) { tmp = lcm(rb, b); ra = ra * tmp / rb + a * tmp / b, rb = tmp; if (ra < 0) flag = 1, ra = -ra; tmp = gcd(ra, rb); ra /= tmp, rb /= tmp; if (flag) flag = 0, ra = -ra; } printf("%lld", ra); if (rb != 1) printf("/%lld", rb); return 0; }
|