#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
#define ll long long
struct Fraction{
ll fenzi,fenmu;
};
int gcd(int a,int b){
if(b==0) return a;
return gcd(b,a%b);
}
int lcm(int a,int b){
return a/gcd(a,b)*b;
}
Fraction reduction(Fraction&a){
if(a.fenmu<0){
a.fenmu=-a.fenmu;
a.fenzi=-a.fenzi;
}
if(a.fenzi==0) a.fenmu=1;//分子为0
else {
//分子不是0 进行约分
ll gy=abs(gcd(a.fenzi,a.fenmu));
a.fenzi/=gy;
a.fenmu/=gy;
}
return a;
}
Fraction add(Fraction& a,Fraction&b){
Fraction c;
c.fenmu=a.fenmu*b.fenmu;
c.fenzi=a.fenzi*b.fenmu+a.fenmu*b.fenzi;
return reduction(c);
}
void print(Fraction &a){//分子为正负 分母是正 但是可能是假分式
if(a.fenmu==1) printf("%lld",a.fenzi);
else if(abs(a.fenzi)>abs(a.fenmu))
printf("%lld %lld/%lld",a.fenzi/a.fenmu,abs(a.fenzi)%a.fenmu,a.fenmu);
else printf("%lld/%lld",a.fenzi,a.fenmu);
}
int main(){
int n;
cin>>n;
Fraction a;
scanf("%lld/%lld",&a.fenzi,&a.fenmu);
for(int i=1;i<n;i++){
Fraction b;
scanf("%lld/%lld",&b.fenzi,&b.fenmu);
a=add(a,b);
}
print(a);
return 0;
}
标签:return,int,个数,fenmu,Fraction,L1,009,fenzi,lld
From: https://www.cnblogs.com/chengyiyuki/p/18147527