比赛 五一大礼包 评测结果 AAAAAAAAAA
题目名称 国王游戏 最终得分 100
用户昵称 RpUtl 运行时间 0.233 s
代码语言 C++ 内存使用 4.12 MiB
提交时间 2026-05-04 10:20:23
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N=1005;
const int M=5005;
typedef long long ll;
struct node{ll a,b;}x[N];
int n,a,b;
bool cmp(node u,node v){
    return u.b*u.a<v.b*v.a; 
}
struct BIG{
    ll num[M];
    int n;
    void init(int a){
        n=0;memset(num,0,sizeof(num));
        while(a)num[++n]=a%10,a/=10;
    } 
    void print(){
        for(int i=n;i>=1;i--){
            printf("%d",num[i]);
        } 
    }
}prod,ans;
BIG operator * (const BIG a,const ll b){
    BIG c=a;
    for(int i=1;i<=c.n;i++){
        c.num[i]*=b;
    }
    for(int i=1;i<c.n;i++){
        if(c.num[i]>9){
            c.num[i+1]+=c.num[i]/10;
            c.num[i]%=10;
        }
    }
    while(c.num[c.n]){
        c.num[c.n+1]+=c.num[c.n]/10;
        c.num[c.n]%=10;
        c.n++;
    }
    while(!c.num[c.n]&&c.n)c.n--;
    return c;
}
bool operator < (BIG u,BIG v){
    if(u.n!=v.n)return u.n<v.n;
    else{
        for(int j=u.n;j>=1;j--){
            if(u.num[j]!=v.num[j])return u.num[j]<v.num[j];
        }
    }
}
BIG operator / (BIG u,ll v){
    BIG w;w.n=0;
    memset(w.num,0,sizeof(w.num));
    for(int i=u.n;i>=1;i--){
        if(u.num[i]>=v){
            w.num[i]=u.num[i]/v;
            u.num[i]%=v;
            if(!w.n)w.n=i;
        }
        u.num[i-1]+=u.num[i]*10;
    } 
    return w;
}
int main(){
    freopen("kinggame.in","r",stdin);
    freopen("kinggame.out","w",stdout);
    scanf("%d",&n);
    scanf("%d %d",&a,&b);
    for(int i=1;i<=n;i++){
        scanf("%lld %lld",&x[i].a,&x[i].b); 
    } 
    sort(x+1,x+1+n,cmp);
    prod.init(a);
    ans.init(0);
    for(int i=1;i<=n;i++){
        BIG w=prod/x[i].b;
        if(ans<w)ans=w;
        prod=prod*x[i].a;
    }
    ans.print(); 
    return 0;
}