4个WA,求大佬帮助
查看原帖
4个WA,求大佬帮助
344081
MilesHunter楼主2020/8/1 15:43
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
struct node{
	int l,r;
	long long mult;
}a[1010];
int n;
int mut[200]={0,1},lenmut=1,cu[200],lencu,maxx[200]={0},lenmaxx=0;
int cmp(node q,node p)
{
	if(q.mult==p.mult)return q.l<p.l;
	else return q.mult<p.mult;
}
void multiply(int x)
{
	for(int i=1;i<=lenmut;i++)
		mut[i]*=x;
	for(int i=2;i<=lenmut;i++)
	{
		mut[i]+=mut[i-1]/10;
		mut[i-1]%=10;
	}
	while(mut[lenmut]>10)
	{
		++lenmut;
		mut[lenmut]=mut[lenmut-1]/10;
		mut[lenmut-1]%=10;
	}
	//for(int i=lenmut;i>=1;i--)cout<<mut[i]<<' ';
	//cout<<'m'<<endl;
}
void cut(int x)
{
	memset(cu,0,sizeof(cu));
	int yu=0;
	lencu=lenmut;
	for(int i=lencu;i>=1;i--)
	{
		cu[i]=(mut[i]+yu*10)/x;
		yu=(mut[i]+yu*10)%x;
	}
	while(!cu[lencu])--lencu;
	//for(int i=lencu;i>=1;i--)cout<<cu[i]<<' ';
	//cout<<'c'<<endl;
}
void zhuan()
{
	memset(maxx,0,sizeof(maxx));
	lenmaxx=lencu;
	for(int i=1;i<=lenmaxx;i++)maxx[i]=cu[i];
}
void maxn()
{
	if(lencu>lenmaxx)zhuan();
	else if(lencu<lenmaxx)return ;
	else for(int i=1;i<=lencu;i++)
		if(cu[i]>maxx[i])
		{
			zhuan();
			return ;
		}
		else if(cu[i]<maxx[i])return ;
}
void sou()
{
	for(int i=1;i<=n;i++)
	{
		multiply(a[i-1].l);
		cut(a[i].r);
		maxn();
	}
	for(int i=lenmaxx;i>=1;i--)
		cout<<maxx[i];
}
int main()
{
	//freopen("P1080_3.in","r",stdin);
	cin>>n;
	//cout<<n<<endl;
	for(int i=0;i<=n;i++)
	{
		cin>>a[i].l>>a[i].r;
		a[i].mult=a[i].l*a[i].r;
	}
	sort(a+1,a+n+1,cmp);
	//for(int i=0;i<=n;i++)cout<<a[i].l<<' '<<a[i].r<<' '<<a[i].mult<<endl;
	sou();
	return 0;
}
2020/8/1 15:43
加载中...