| 比赛 |
五一大礼包 |
评测结果 |
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;
}