邱眺!逼管
查看原帖
邱眺!逼管
1517836
wqy0525楼主2025/7/31 10:37

#include<bits/stdc++.h>
using namespace std;
const long long N=1e6+17;
long long n;
long long a,b;
struct node{
	long long l,r;
}a[N];
bool cmp(node q,node w){
	return q.l*q.r<w.l*w.r;
}
void gc(long long a[],string bsize,long long &c[],long long la){
	long long lb=bsize.size();
	long long lc=la+lb-1,b[4100],p[4100];
	for(long long i=0;i<lb;i++){
		b[i]=bsize[lb-i-1]-'0';
	}
	for(long long i=0;i<lb;i++){
		for(long long j=0;j<la;j++){
			c[i+j]+=b[i]*a[j];
			if(c[i+j]>9){
				c[i+j+1]+=c[i+j]/10;
				c[i+j]%=10;
			}
		}
	}
	while(c[lc]==0&&lc>=1){
		lc--;
	}
	for(long long i=lc;i>=0;i--){
		c[i]=c[lc-i];
	}
}
void check(long long* a,long long* b,long long len){
	if(a[len]>0) return 1;
	for(long long i=len-1;i>=0;i--){
		if(a[i]>b[i]) return 1;
		else if(a[i]<b[i]) return 0;
	}
	return 1;
}
void gcc(long long &a[N],string bsize,long long &c[N],long long la){
	long long lb=bsize.size(),b[N],i,j;
	for(long long i=0;i<lb;i++){
		b[i]=bsize[lb-i-1]-'0';
	}
	if(bsize=="0") return ;
	for(i=la-lb;i>=0;i--){
		while(check(a+i,b,lb)){
			c[i]++;
			for(j=0;j<=ln-1;j++){
				if(a[i+j]<b[j]){
					a[i+j+1]--;
					a[i+j]+=10;
				}
				a[i+j]-=b[j];
			}
		}
	}
	while(a[la]==0&&la>0) la--;
	while(c[len]==0&&c>0) len--;
	for(long long i=lc;i>=0;i--){
		c[i]=c[lc-i];
	}
}
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin>>n>>a>>b;
    for(long long i=1;i<=n;i++){
    	cin>>a[i].l>>a[i].r;
	}
	sort(a+1,a+1+n,cmp);
	int sum=a[1].l;
	for(int i=2;i<=n+1;i++){
		int num=gcc();
		ans=max(ans,num);
		sum*=a[i].l;
	}
	cout<<ans<<endl;
	return 0;
}
2025/7/31 10:37
加载中...