提交时间:2024-03-14 20:10:28
运行 ID: 138259
#include<cstdio> #include<cstring> #include<iostream> #include<cmath> #include<cstring> #include<algorithm> using namespace std; struct node { int a,b; long long sum; }; node a[10010]; int n; int f[10010],f1[10010],b[10010]; char s[10010]; inline bool cmp(const node x,const node y) { return x.sum<y.sum; } inline void chu(int x) { memset(b,0,sizeof b); long long k=0; for(int i=f1[0];i>=1;i--) { k=k*10+f1[i]; if(k>=x) { if(b[0]==0) b[0]=i; b[i]=k/x; k%=x; } } } inline void cheng(int x) { long long k=0; memset(b,0,sizeof b); for(int i=1;i<=f1[0];i++) { b[i]+=f1[i]*x+k; b[i+1]+=b[i]/10; b[i]=b[i]%10; } for(b[0]=f1[0];b[b[0]+1];) { b[++b[0]+1]+=b[b[0]]/10; b[b[0]]=b[b[0]]%10; } for(int i=0;i<10000;i++) f1[i]=b[i]; } int main() { cin>>n; cin>>s+1; for(int i=strlen(s+1);i>=1;i--) f1[++f1[0]]=s[i]-'0'; int m; cin>>m; for(int i=1;i<=n;i++) { cin>>a[i].a>>a[i].b; a[i].sum=a[i].a*a[i].b; } sort(a+1,a+1+n,cmp); for(int i=1;i<=n;i++) { chu(a[i].b); if(b[0]>f[0]) for(int i=0;i<=10000;i++) f[i]=b[i]; else if(b[0]==f[0]) for(int i=f[0];i>=1;i--) if(b[i]>f[i]) for(int j=0;j<=10000;j++) f[j]=b[j]; cheng(a[i].a); } for(int i=f[0];i>=1;i--) cout<<f[i]; return 0; }