求助!!! 第七个点 调了一下午
查看原帖
求助!!! 第七个点 调了一下午
632783
biaojie楼主2022/3/13 15:33
#include<iostream>
#include<algorithm>
#include<cstring>
#define MAXN 25000
using namespace std;
struct Bigint{
	int len,a[MAXN];
	Bigint(int x=0){
		memset(a,0,sizeof(a));
		for(len=1;x;len++){
			a[len]=x%10,x/=10;
		}
		len--;
	}
	int &operator[](int i){
		return a[i];
	}
	void flatten(int L){
		len=L;
		for(int i=1;i<=len;i++){
			a[i+1]+=a[i]/10;
			a[i]%=10;
		}
		for(;!a[len];){
			len--;
		}
	}
	void print(){
		for(int i=max(len,1);i>=1;i--){
			printf("%d",a[i]);
		}
	}
};
Bigint operator+(Bigint a,Bigint b){
	Bigint c;
	int len=max(a.len,b.len);
	for(int i=1;i<=len;i++){
		c[i]+=a[i]+b[i];
	}
	c.flatten(len+1);
	return c;
}
Bigint operator*(Bigint a,int b){
	Bigint c;
	int len=a.len;
	for(int i=1;i<=len;i++){
		c[i]=a[i]*b;
	}
	c.flatten(len+11);
	return c;
}
Bigint operator/(Bigint a,int b){
	Bigint c;
	int x=0;
	for(int i=a.len;i>=1;i--){
    	x=x*10+a[i];
		c[i]=x/b;
		x%=b;
	}
	c.flatten(a.len+11);
	return c;
}
Bigint max(Bigint x,Bigint y){
	if(x.len!=y.len){
		if(x.len>y.len){
			return x;
		}else{
			return y;
		}
	}else{
		for(int i=x.len;i>=1;i--){
		    if(x[i]!=y[i]){
				if(x[i]>y[i]){
					return x;
				}else{
					return y;
				}
			}
		}
	}
}
struct node{
	long long a;
 	long long b;
}ans[20050];
bool cmp(node x,node y){
	return x.a*x.b<y.a*y.b;
}
int main(){
	long long n;
	cin>>n;
	long long x,y;
	cin>>x>>y;
	for(int i=1;i<=n;i++){
		cin>>ans[i].a>>ans[i].b;
	}
	sort(ans+1,ans+1+n,cmp);
	Bigint f=Bigint(x);
	Bigint jpg;
	Bigint maxnn=Bigint(0);
	Bigint jpg2;
	for(int i=1;i<=n;i++){
		jpg=f/ans[i].b;
		f=f*ans[i].a;
		maxnn=max(maxnn,jpg);
	}
	maxnn.print();
	return 0;
}

重载运算符

2022/3/13 15:33
加载中...