代码:
#include <bits/stdc++.h>
using namespace std;
int a,b,am=0,az=0;
int gcd(int a,int b){//最大公因数
if(b==0) return a;
gcd(b,a%b);
}
int lcm(int a,int b){//最小公倍数
return a/gcd(a,b)*b;
}
void pls(int m,int z){//分数加法
if(am==0 && az==0){
am=m;
az=z;
for(int i=2;i<=min(am,az);i++){//约分
if(am%i==0 && az%i==0){
am/=i;
az/=i;
}
}
return;
}
int l=lcm(am,m);
z*=(l/m);
az*=(l/am);
am=l;
az+=z;
for(int i=2;i<=min(am,az);i++){//约分
if(am%i==0 && az%i==0){
am/=i;
az/=i;
}
}
}
void mns(int m,int z){//分数减法
int l=lcm(am,m);
z*=(l/m);
az*=(l/am);
am=l;
az-=z;
for(int i=2;i<=min(am,az);i++){//约分
if(am%i==0 && az%i==0){
am/=i;
az/=i;
}
}
}
int main(){
int z,m;
char c,d;
cin>>z>>d>>m;
pls(m,z);
while(cin>>c>>z>>d>>m){
if(c=='+') pls(m,z);
else mns(m,z);
}
cout<<az<<"/"<<am;
return 0;
}
结果: 除了 Subtask#1 的 #12 测试点AC,其它都是RE。
下载了 #1(RE) 的测试数据,完全正确。
这是怎么回事?请大佬们帮帮本蒟蒻,谢谢。