求助!帮忙差错
查看原帖
求助!帮忙差错
137491
wangjunze楼主2022/4/5 22:51
#include<bits/stdc++.h>
#define ll long long
//#define LOCAL
#define REP(i,n) for(int (i)=0;(i)<(int)(n);(i)++)
#define foreach(c,itr) for(__typeof((c).begin()) itr=(c).begin();itr!=(c).end();itr++)
using namespace std;

const int INF=0x3f3f3f3f;
const int SIZE=1001;
struct INT
{
	int l;
	int r;
	bool operator<(const INT &a)
	{
		return l*r<a.l*a.r;
	}
		
}a[SIZE];
int n;

struct bigint
{
	int num[5050];
	int len;
	bool operator>(const bigint &a)
	{
		if(len>a.len)return true;
		if(len<a.len)return false;
		for(int i=len-1;i>=0;i--)
			if(num[i]>a.num[i])return true;
			else if(num[i]<a.num[i])return false;
		return false;
	}
	
	bigint operator=(bigint a)
	{
		len=a.len;
		REP(i,len)num[i]=a.num[i];
	}
	
	bigint operator=(int a)
	{
		len=0;
		while(a!=0)
		{
			num[len]=a%10;
			a/=10;
			len++;
		}	
	}
};

bigint mult(bigint x,int a)
{
	REP(i,x.len)x.num[i]*=a;
		REP(i,x.len)
		{
			if(x.num[i]>=10)
				x.num[i+1]+=x.num[i]/10;
			x.num[i]%=10;
		}
		
		while(x.num[x.len-1]>=10)
		{
			x.num[x.len]+=x.num[x.len-1]/10;
			x.num[x.len-1]%=10;
			x.len++;
		}
		if(x.num[x.len])x.len++;
	return x;
}

bigint div(bigint x,int a)
{
	for(int i=x.len-1;i>=0;i--)
		{
			if(i>0)x.num[i-1]+=(x.num[i]%a)*10;
			x.num[i]/=a;
		}
		while(x.num[x.len-1]==0)x.len--;
	return x;
}

int main()
{
	#ifdef LOCAL
		//freopen("P1080_6.in","r",stdin);
		//freopen(".in","w",stdout);
	#endif
	cin>>n;
	cin>>a[0].l>>a[0].r;
	REP(i,n)cin>>a[i+1].l>>a[i+1].r;
	sort(a+1,a+n+1);
	bigint ans;
	ans=0;
	bigint mu;
	mu=a[0].l;
	for(int i=1;i<=n;i++)
	{
		
		if(div(mu,a[i].r)>ans)
			ans=div(mu,a[i].r);
		mu=mult(mu,a[i].l);
	}
	for(int i=ans.len-1;i>=0;i--)
		cout<<ans.num[i];
	cout<<endl;
	return 0;
	
}

为什么只有60分

2022/4/5 22:51
加载中...