定义一个结构及其加法
#include<iostream> using namespace std; struct node { long num,den; node(int a,int b):num(a),den(b){} node operator+(node x) { long _n=num*x.den+den*x.num; long _d=den*x.den; if(!_n)return node(0,1); long c,a=_n,b=_d; while(c=a%b)a=b,b=c; return node(_n/b,_d/b); } }; int main() { int n;cin>>n; node x(0,1); for(long a,b,i=0;i<n;++i) { scanf("%ld/%ld",&a,&b); x=x+node(a,b); } bool flag=false; if(x.num==0)cout<<0; else { if(x.num/x.den&&(flag=true)) cout<<x.num/x.den; if(x.num%x.den) { if(flag)cout<<' '; cout<<x.num%x.den<<'/'<<x.den; } } return 0; }