Note
Code:
#include<bits/stdc++.h>
using namespace std;
struct rational{
long long ints,num,den;
rational(){
ints=0;
}
};
long long gcd(long long a,long long b){
if(a>b) swap(a,b);
for(long long i=a;i>1;i--){
if(a%i==0&&b%i==0) return i;
}
return 1;
}
int main(){
int n;
cin>>n;
struct rational res;
res.ints=0;
res.num=0;
res.den=1;
for(int i=0;i<n;i++){
long long a,b;
scanf("%lld/%lld",&a,&b);
res.ints+=a/b;
a%=b;
res.num=res.num*b+a*res.den;
res.den*=b;
if(res.den<0){
res.num=-res.num;
res.den=-res.den;
}
int gcdn=gcd(abs(res.den),abs(res.num));
res.den/=gcdn;
res.num=res.num/gcdn;
res.ints+=res.num/res.den;
res.num%=res.den;
}
int flag=0;
if(res.ints!=0){
flag=1;
cout<<res.ints;
}
if(res.num!=0){
if(flag==1) cout<<" ";
cout<<res.num<<"/"<<res.den;
}
if(res.ints==0&&res.num==0) cout<<0;
return 0;
}