蒟蒻求助,#11WA不理解为什么,求调!!(悬关
查看原帖
蒟蒻求助,#11WA不理解为什么,求调!!(悬关
757189
bj12z_JiaTangchen楼主2023/8/28 23:37
#include<bits/stdc++.h>
using namespace std;
int n;
int ans[100005],la=0,res[100005];
struct minister
{
	int a,b;
}p[1005];
bool cmp(minister x,minister y)
{
	return (x.a*x.b)<(y.a*y.b);
}
int m[100005],l=1;
void mutiply(int x)
{
	int add=0;
	for(int i=1;i<=l+10;i++)
	{
		int tmp=m[i]*x+add;
		m[i]=tmp%10;
		add=tmp/10;
	}
	l+=10;
	while(m[l]==0) l--;
}
void get(int x)
{
	memset(res,0,sizeof(res));
	int tmp,l1=0;
	for(int i=l;i>=1;i--){
		tmp=tmp*10+m[i],l1++;
		if(tmp<x) continue;
		res[l1]=tmp/x;
		tmp%=x;
	}
	for(int i=1;i<=(l1+1)/2;i++)
		swap(res[i],res[l1-i+1]);
	while(res[l1]==0&&l1>1) l1--;
	if(l1>la){
		la=l1;
		for(int i=la;i>=1;i--) ans[i]=res[i];
	}
	else if(l1==la){
		int f=0;
		for(int i=la;i>=1;i--){
			if(ans[i]<res[i]){
				f=1;
				break;
			}
			if(ans[i]>res[i]) break;
		}
		if(f){
			for(int i=la;i>=1;i--) ans[i]=res[i];
		}
	}
}
int main()
{
	scanf("%d",&n);
	for(int i=0;i<=n;i++)
		scanf("%d%d",&p[i].a,&p[i].b);
	sort(p+1,p+n+1,cmp);
	m[l]=1;
	for(int i=1;i<=n;i++){
		mutiply(p[i-1].a);
		get(p[i].b);
	}
	if(ans[la]==0) la--;
	for(int i=la;i>=1;i--)
		printf("%d",ans[i]);
	return 0;
}
2023/8/28 23:37
加载中...