#include<iostream>
using std::cout;
using std::cin;
using std::endl;
struct frition{
long long mu;
long long zi;
};
long long gcd(long long a, long long b){
if (!a)
return b;
else if(!b)
return a;
long long tmp;
while (b){
tmp = a % b;
a = b;
b = tmp;
}
return a;
}
int main(){
freopen("1.in", "r", stdin);
int n;
cin >> n;
struct frition *a = new struct frition[n];
long long i,Mult = 1,g = 0,mu = 1,zi = 0;
for (i = 0; i < n; i++){
scanf("%lld/%lld", &a[i].zi, &a[i].mu);
g = gcd(mu, a[i].mu);
Mult = mu *a[i].mu / g;
zi = Mult * zi / mu + Mult*a[i].zi / a[i].mu;
mu = Mult;
g = gcd(abs(zi), abs(mu));
zi /= g;
mu /= g;
}
if (zi<0)
g = gcd(-zi, mu);
else g = gcd(zi, mu);
zi /= g;
mu /= g;
if (zi < 0){
putchar('-');
zi = -zi;
}
if (zi / mu >= 1||zi == 0){
printf("%lld", zi / mu);
zi = zi % mu;
if (zi)
putchar(' ');
else putchar('\n');
}
if (zi)
printf("%lld/%lld\n", zi, mu);
return 0;
}
pat 1081
最新推荐文章于 2021-12-28 16:23:27 发布