WA #10,调了好久了
查看原帖
WA #10,调了好久了
536337
eb0ycn楼主2024/1/10 08:32
/*
这题记得加入到博客里面。 
*/ 
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const ll mod=100000000;
int n,x,y,k,ans=1;//这个ans是下标,指向最大的大臣。 
struct node
{
	int a,b;
	bool operator< (const node& cwx)const
	{
		return a*b<cwx.a*cwx.b;
	}
}p[10005];
ll zuo[5001],gw,ret;
int main()
{
	scanf("%d%lld%*lld",&n,zuo);//国王右手上的数没屁用。
	p[0].a=zuo[0];
	for(int i=1;i<=n;++i)scanf("%d%d",&x,&y),p[i].a=x,p[i].b=y;
	sort(p+1,p+n+1);//排序没问题。
	for(int i=2;i<=n;++i)if(p[i-1].a*p[i-1].b>=p[i].b)ans=i;
	for(int i=1;i<ans;++i)
	{
		for(int j=0;j<=k;++j)
		{
			zuo[j]*=p[i].a;
			if(j)zuo[j]+=zuo[j-1]/mod,zuo[j-1]%=mod;
		}
		if(zuo[k]>=mod&&k)++k,zuo[k]+=zuo[k-1]/mod,zuo[k-1]%=mod;
	}
	if(!k)return 0*printf("%lld",zuo[0]/p[ans].b);
	else if(zuo[k]/p[ans].b)printf("%lld",zuo[k]/p[ans].b);
	zuo[k]%=p[ans].b,ret=zuo[k];
	for(int i=k-1;~i;--i)ret=ret*mod+zuo[i],printf("%08lld",ret/p[ans].b),ret%=p[ans].b;
	return 0;
}
2024/1/10 08:32
加载中...