比赛 五一大礼包 评测结果 AAAAAAAAAA
题目名称 国王游戏 最终得分 100
用户昵称 郑霁桓 运行时间 1.691 s
代码语言 C++ 内存使用 3.84 MiB
提交时间 2026-05-04 10:05:18
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long n,b;
string a,s,as;
struct ab{
    string a,b; 
}v[1005];
inline string f(string s1,string s2){
    int z1=s1.size(),z2=s2.size(),z3=z1+z2+3;
    string s="";
    long long p[z1+z2+10];
    for(int i=0;i<z1/2;i++) swap(s1[i],s1[z1-i-1]);
    for(int i=0;i<z2/2;i++) swap(s2[i],s2[z2-i-1]);
    for(int i=0;i<z1+z2+5;i++) p[i]=0;
    for(int i=0;i<z1;i++){
        for(int j=0;j<z2;j++){
            p[i+j]+=(s1[i]-'0')*(s2[j]-'0');
        }
    }
    while(z3>=0&&!p[z3]) z3--;
    z3++;
    int jin=0;
    for(int i=0;i<z3;i++){
        jin+=p[i];
        p[i]=jin%10;
        jin/=10;
    }
    while(jin){
        p[z3]=jin%10;
        jin/=10;
        z3++;
    }
    for(int i=z3-1;i>=0;i--){
        s=s+(char)(p[i]+'0');
    }
    if(z3<0) s="0";
    return s;
}
inline string ff(string s1,string s2){
    int z1=s1.size(),z2=s2.size(),z3=0;
    long long a2=0;
    for(int i=0;i<z2;i++) a2=a2*10+(s2[i]-'0');
    string s="";
    long long p[z1+10],ps=0;
    for(int i=0;i<z1+5;i++) p[i]=0;
    for(int i=0;i<z1;i++){
        ps=ps*10+s1[i]-'0';
        if(ps<a2){
            p[i]=0;
            continue;
        }
        for(int j=1;j<=9;j++){
            if(a2*j<=ps&&ps<a2*j+a2){
                p[i]=j;
                ps-=a2*j;
                break;
            }
        }
    }
    while(z3<=z1+1&&!p[z3]) z3++;
    for(int i=z3;i<z1;i++){
        s=s+char(p[i]+'0');
    }
    if(z3>z1+1) s="0";
    return s;
}
inline bool ck(string s1,string s2){
    if(s1.size()==s2.size()) return s1<s2;
    return s1.size()<s2.size();
}
inline string mx(string s1,string s2){
    if(s1.size()==s2.size()) return (s1>s2?s1:s2);
    return (s1.size()>s2.size()?s1:s2);
}
inline bool cp(ab x,ab y){
    return ck(mx(y.b,f(x.b,x.a)),mx(f(y.b,y.a),x.b));
}
int main(){
    freopen("kinggame.in","r",stdin);
    freopen("kinggame.out","w",stdout);
    ios::sync_with_stdio(false);
    cin>>n>>a>>b;
    for(int i=1;i<=n;i++){
        cin>>v[i].a>>v[i].b;
    }
    sort(v+1,v+n+1,cp);
    s=a;
    as="0";
    for(int i=1;i<=n;i++){
        as=mx(as,ff(s,v[i].b));
        s=f(s,v[i].a);
    }
    cout<<as;
    return 0;
}