30求助
查看原帖
30求助
389540
imfkwk楼主2021/1/10 19:41
#include <bits/stdc++.h>
#define ll long long
using namespace std;
struct p{
	ll l;
	ll r;
}m[1001];

ll n;
ll cj[10001];
ll co[10001];
ll ans[10001];

void ti(ll x){
	for(int i=1;i<=cj[0];i++)cj[i]*=x;
	for(int i=1;i<=cj[0];i++){
		cj[i+1]+=cj[i]/10;
		cj[i]%=10;
		if(i==cj[0]&&cj[i+1])cj[0]++;
	}
}

void ch(ll x){
	memset(co,0,sizeof(co));
	ll y=0;
	for(int i=cj[0];i>=1;i--){
		co[i]=(y*10+cj[i])/x;
		y=(y*10+cj[i])%x;
	}
	int len=0;
	while(co[len+1])len++;
	co[0]=len;
}

bool maks(){
	if(co[0]>ans[0])return 1;
	if(ans[0]>co[0])return 0;
	for(int i=co[0];i>=1;i--){
		if(co[i]>ans[i])return 1;
		if(ans[i]>co[i])return 0;
	}
	return 0;
}

bool cmp(p a,p b){return a.l*a.r<b.l*b.r;}

int main(){
	scanf("%lld",&n);
	for(int i=0;i<=n;i++)
	scanf("%lld%lld",&m[i].l,&m[i].r);
	
	sort(m+1,m+n+1,cmp);
	cj[0]=cj[1]=1;
	
	for(int i=1;i<=n;i++){
		ti(m[i-1].l);
		ch(m[i].r);
		if(maks()){
			for(int j=0;j<=co[0];j++)
			ans[j]=co[j];
		}
	}
	
	for(int i=ans[0];i>=1;i--)cout<<ans[i];
}
2021/1/10 19:41
加载中...