#include<bits/stdc++.h>
using namespace std;
long long n,lm,ld,la,tt,len;
int m[20010],d[20010],ans[20010],sw[6];
struct node{
int l,r;
}a[10010];
bool cmp(node a,node b){//排序函数
if(a.l*a.r==b.l*b.r) return a.r<b.r;
else return a.l*a.r<b.l*b.r;
}
void csh(){//初始化
memset(m,0,sizeof m);
memset(d,0,sizeof d);
lm=1,ld=0;
m[1]=1;
}
void multiply(int x){//高精乘
tt=x;
int jw=0;
for(int j=1;j<=lm;j++){
m[j]=m[j]*tt+jw;
jw=m[j]/10;
m[j]%=10;
while(m[lm+1]) lm++;
}
}
void divide(int x){//高精除
int y=0;
ld=lm;
for(int i=lm;i>0;i--) d[i]=(y*10+m[i])/x,y=(y*10+m[i])%x;
while(!d[ld]) ld--;
}
bool compare(){//比大小
if(ld>la) return 1;
else if(ld==la) for(int i=ld;i>0;i--) if(d[i]>ans[i]) return 1;
return 0;
}
int main(){
cin>>n;
for(int i=0;i<=n;i++) cin>>a[i].l>>a[i].r;
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
csh();
for(int j=0;j<i;j++) multiply(a[j].l);
divide(a[i].r);
if(compare()) la=ld,memcpy(ans,d,sizeof(d));
}
for(int i=la;i>0;i--) cout<<ans[i];
}
不知道哪里写挂了x_x