MLE爆零求助
  • 板块P8584 探索未知
  • 楼主cjh1213
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/10/16 16:48
  • 上次更新2023/10/27 07:14:54
查看原帖
MLE爆零求助
670829
cjh1213楼主2022/10/16 16:48
#include<iostream>
using namespace std;
long long gcd(long long m,long long n)
{    
	if(m<n) swap(m,n);
    if(n==0) return m;
    else return gcd(n,m%n);
}
int main(){
	int n,f;
	int a[1001],b[1001],opt[1001];
	long long num1=0,num2=1;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>a[i]>>b[i]>>opt[i];
	}
	num1=(opt[0]==1)?a[0]:-a[0];
	num2=b[0];
	for(int i=1;i<n;i++)
	{
		f=1;
		if(opt[i]==1)
		{
			num1=num1*b[i]+num2*a[i];
		}
		if(opt[i]==2)
		{
			num1=num1*b[i]-num2*a[i];
		}
		num2*=b[i];
		if(num1<0&&num2>0)
		{
			f*=-1;
			num1=-num1;
		}
		else if(num1>0&&num2<0)
		{
			f*=-1;
			num2=-num2;
		}
		else {
			num1=-num1;
			num2=-num2;
		}
		if(num1>=1e9||num2>=1e9||i==n-1)
		{
			num1=f*num1/gcd(num1,num2);
			num2=num2/gcd(num1,num2);
		}
	}
	if(num1%num2==0)
	{
		cout<<num1/num2;
		return 0;
	}
	cout<<num1<<"/"<<num2;
	return 0;
} 
2022/10/16 16:48
加载中...