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