#include <iostream>
using namespace std;
typedef long long LL;
LL gcd(LL a,LL b){
return b?gcd(b,a%b):a;
}
LL n,m,k,sum,a,b;
int main(){
cin>>n;
for(int i=0;i<n;i++){
scanf("%ld/%ld",&a,&b);
sum+=a/b;
a=a%b;
if(i==0) m=a,k=b;
else{
LL s=k*b/gcd(k,b);
//通过求两个分母的最大公因数,表示出最小公倍数
m=m*s/k+a*s/b;
k=s;
sum+=m/k;
m=m%k;
}
//进行在线约分,通过求最大公因数是否为1,每求出一个答案,都约分一次
while(1){
LL t=gcd(m,k);
if(t==1) break;
m=m/t;k=k/t;
}
}
if(sum==0) {
if(m==0) cout<<0<<endl;
else cout<<m<<"/"<<k<<endl;
}
else{
if(m==0) cout<<sum<<endl;
else cout<<sum<<" "<<m<<"/"<<k<<endl;
}
return 0;
}
PTA L1-9 N个数求和
于 2024-04-30 01:20:20 首次发布