Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
168943 黄锦昱 国王游戏 C++ 通过 100 83 MS 508 KB 1485 2024-08-20 14:57:53

Tests(10/10):


#include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<queue> #include<cstring> #include<fstream> using namespace std; int sum[50000],ans[50000],t[50000]; int n; struct node{ int l,r,lr; }pp[1009]; bool cmp(node x,node y){ if(x.lr!=y.lr) return x.lr<y.lr; return x.r<y.r; } void cheng(int x){ for(int i=1;i<=sum[0];i++){ sum[i]*=x; } int i; for(i=1;i<=sum[0];i++){ sum[i+1]+=sum[i]/10; sum[i]%=10; if(i==sum[0] && sum[sum[0]+1]!=0) sum[0]++; } } bool judge(){ for(int i=1;i<=t[0];i++){ if(t[i]!=ans[i]){ return t[i]>ans[i]; } } } void solve(int x){ int num=0,i=sum[0]+1,s=0; memset(t,0,sizeof(t)); while(num<x){ --i; num=num*10+sum[i]; } t[0]=i; for(;i>=1;i--){ t[++s]=num/x; num=num%x*10+sum[i-1]; } if(t[0]>ans[0] || t[0]==ans[0] && judge()){ for(int i=0;i<=t[0];i++) ans[i]=t[i]; } } int main(){ scanf("%d",&n); for(int i=0;i<=n;i++){ scanf("%d%d",&pp[i].l,&pp[i].r); pp[i].lr=pp[i].l*pp[i].r; } sum[1]=pp[0].l; sum[0]=1; ans[1]=0; ans[0]=1; sort(pp+1,pp+n+1,cmp); for(int i=1;i<=n;i++){ cheng(pp[i].l); solve(pp[i].lr); } for(int i=1;i<=ans[0];i++) i<ans[0]?printf("%d",ans[i]):printf("%d\n",ans[i]); return 0; }


测评信息: