比赛 五一大礼包 评测结果 AAAAWAWAAA
题目名称 国王游戏 最终得分 80
用户昵称 dream 运行时间 0.058 s
代码语言 C++ 内存使用 3.74 MiB
提交时间 2026-05-04 11:55:57
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1005,NN=605;
ll base=1e9;
int n; 
struct node{
    ll x[NN];
    int len=1;
    bool operator <(const node &t) const{
    	if(len==t.len){
    		for(int i=len;i>=1;i--){
    			if(x[i]!=t.x[i]) return x[i]<t.x[i];
			}
			return 0;
		}
		else{
			return len<t.len;
		}
    }
};
struct nodee{
	ll a,b;
	bool operator <(const nodee &t) const{
		return a*b<t.a*t.b;
	}
}q[N];
void print(node a){
	while(a.x[a.len]==0) a.len--;
	for(int i=a.len;i>=1;i--){
		int cnt=0;
		int xx=a.x[i];
		if(i!=a.len) {
			while(xx){
			cnt++;
			xx/=10;
			}
			cnt=9-cnt;
			while(cnt){
				cout<<0;
				cnt--;
			}		
		}
		cout<<a.x[i];
	}
}
node sum,mx;
node ditime(node a,int b){
    ll jw=0;
    int l=a.len;
    for(int i=1;i<=a.len;i++){
        a.x[i]*=b;
        a.x[i]+=jw;
        jw=a.x[i]/base;
        a.x[i]%=base;
    }
    if(jw){
        a.x[++l]=jw;
        a.len=l;
    }
    return a;
}
node disub(node a,int b){
	ll rest=0;
	for(int i=a.len;i>=1;i--){
		a.x[i]=(rest*base+a.x[i]);
		rest=a.x[i]%b;
		a.x[i]/=b;
	}
	while(a.x[a.len]==0) a.len--;
	return a;
}
int main(){
	freopen("kinggame.in","r",stdin);
	freopen("kinggame.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin>>n;
    int aa,bb;
    cin>>aa>>bb;
    sum.x[1]=aa;
    for(int i=1;i<=n;i++){
        int a,b;
        cin>>a>>b;
        q[i]={a,b};
    }
    sort(q+1,q+n+1);
    for(int i=1;i<=n;i++){
    	node shang=disub(sum,q[i].b);
    	if(mx<shang){
  		    mx=shang;
		}
    	
    	sum=ditime(sum,q[i].a);
	}
	print(mx);
    return 0;
}