呜呜呜,样例全过,但是爆0,麻烦各位大佬帮忙看看orz。。。
#include<bits/stdc++.h>
using namespace std;
struct pc{
long long fm,fz,jj;
};
pc a[1005],b;
void zf(long long r1,long long r2){
if(r1>0&&r2<0){
r1=-r1; r2=-r2;
}
else if(r1<0&&r2<0){
r1=-r1; r2=-r2;
}
b.fz =r1; b.fm =r2;
}
void jy(long long r3,long long r4){
int mm=0;
if(r3<0) mm=1;
if(r3%r4==0){
b.fz =b.fz /b.fm ;
b.fm =1;
return;
}
else{
if(mm){
r3=-r3;
int nm=max(r3,r4);
for(int i=2;i*i<=nm;i++){
if(r3%i==0&&r4%i==0){
r3=r3/i;
r4=r4/i;
i=2;
}
}
b.fz=-r3; b.fm =r4;
return;
}
else if(!mm){
int nm=max(r3,r4);
for(int i=2;i*i<=nm;i++){
if(r3%i==0&&r4%i==0){
r3=r3/i;
r4=r4/i;
i=2;
}
}
b.fz=r3; b.fm =r4;
return;
}
}
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].fz>>a[i].fm>>a[i].jj;
}
b.fz =a[1].fz ; b.fm =a[1].fm ;
zf(b.fz ,b.fm );
for(int i=2;i<=n;i++){
if(b.fm !=a[i].fm) {
b.fz =b.fz *a[i].fm ;
a[i].fz =a[i].fz *b.fm ;
b.fm =a[i].fm *b.fm ;
a[i].fm =a[i].fm *b.fm ;
}
if(a[i].jj ==1) b.fz +=a[i].fz ;
if(a[i].jj ==2) b.fz -=a[i].fz ;
zf(b.fz ,b.fm);
jy(b.fz ,b.fm);
}
// cout<<b.fz <<" "<<b.fm <<endl;
if(b.fz%b.fm==0){
cout<<b.fz;
}
else{
cout<<b.fz<<"/"<<b.fm ;
}
return 0;
}