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; }