1081 Rational Sum 发表于 2020-05-31 每计算一次都计算分子分母的最大公约数,再约分。 123456789101112131415161718192021222324252627282930313233343536373839#include <bits/stdc++.h>using namespace std; long long gcd(long long a, long long b) { return b == 0 ? abs(a) : gcd(b, a % b);}int main() { int n; long long a, b, suma = 0, sumb = 1, GCD; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%lld/%lld", &a, &b); GCD = gcd(a, b); a = a / GCD; b = b / GCD; suma = suma * b + a * sumb; sumb = sumb * b; GCD = gcd(suma, sumb); suma = suma / GCD; sumb = sumb / GCD; } long long integer = suma / sumb; suma = suma - integer * sumb; if (integer != 0) { printf("%lld", integer); if (suma != 0) { printf(" "); } } if (suma != 0) { printf("%lld/%lld", suma, sumb); } if (integer == 0 && suma == 0) { printf("0"); } return 0;}