WA和RE的看过来!
查看原帖
WA和RE的看过来!
733701
封禁用户楼主2023/12/16 21:25

###1<=n<=1000 ###1<=a,b<=10000 #极限:10000^1000==10^4000。 #NOIP普及/提高组+的题,不可能那么简单。

#include <bits/stdc++.h> 
using namespace std;
int n;
struct mini{
	int a,b;
}m[1005];
bool pd(mini x,mini y){
	return (x.a*x.b)<(y.a*y.b);
}


int x[10000]={1};
int len1=1;

void xc(int a){
	int jw=0;
	for(int i=0;i<len1;i++){
		int temp=x[i]*a+jw;
		jw=temp/10;
		x[i]=temp%10;
	}
	while(jw>0){
		len1++;
		x[len1-1]=jw%10;
		jw/=10;
	}
}

int y[10000];
int len2;
void div(int a){
	memset(y,0,sizeof(y));
	int temp=0;
	bool flag=true;
	for(int i=len1-1;i>=0;i--){
		temp=temp*10+x[i];
		if(temp>=a){
			y[i]=temp/a;
			temp%=a; 
			if(flag){
				len2=i+1;
				flag=false;
			}
		}
	} 
}

string Max="0";
void pb(){
	string s;
	for(int i=len2-1;i>=0;i--){
		s+=y[i]+'0';
	}
	if(s.size()==Max.size()){
		if(s>Max){
			Max=s; 
		}
	}
	else if(s.size()>Max.size()){
		Max=s;
	}	
}

int main(void){
	cin>>n;
	cin>>m[0].a>>m[0].b;
	for(int i=1;i<=n;i++){
		cin>>m[i].a>>m[i].b;
	}
	sort(m+1,m+n+1,pd);
	for(int i=1;i<=n;i++){
		xc(m[i-1].a);
		div(m[i].b);
		pb();
	}
	cout<<Max; 
	return 0;
}
2023/12/16 21:25
加载中...