80求助,RE两点
查看原帖
80求助,RE两点
377876
lbc20070331楼主2022/10/16 21:01
#include<bits/stdc++.h>
using namespace std;
int n;
long long up=0,down=1;
int check(int n,int m)
{
	int z=n;
	while(m%n!=0){
		z=m%n;
		m=n;
		n=z;
	}
	return z;
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++){
		int x,y,opt;
		cin>>x>>y>>opt;
		if(opt==1)
		{
			long long under;
			long long qcheck=(y*down)/check(y,down);
			under=qcheck;
			x=x*(qcheck/y);
			up=up*(qcheck/down);
			up+=x;
			down=under;
			long long fcheck=check(up,down);
			up/=fcheck;
			down/=fcheck;
		}
		else
		{
			long long under,flag=0;
			long long qcheck=(y*down)/check(y,down);
			under=qcheck;
			x=x*(qcheck/y);
			up=up*(qcheck/down);
			up-=x;
			down=under;
			if(up!=0){
				if(up<0) up=abs(up),flag=1;
				long long fcheck=check(up,down);
				up/=fcheck;
				if(flag==1) up=-1*up;
				down/=fcheck;	
			}
			else up=0,down=0;
		}
	}
	if(down==0||up==0) cout<<0<<"\n";
	else{
		if(up%down==0) cout<<up/down<<"\n";
		else cout<<up<<"/"<<down;
	}
	return 0;
}
2022/10/16 21:01
加载中...