代码如下,,,本人还不太熟悉高精度,,,
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int n,lm=0,la,lt;
int ans[4005],m[4005],t[4005];
struct node{
int a,b;
}p[1005];
bool tmp(node x,node y){
return x.a*x.b<y.a*y.b;
}
void highp(int m[],int b,int t[]){
for(int i=lt;i>=1;i++) t[i]=0;
int x=0;
for(int i=lm;i>=1;i--){
int temp=x*10+m[i];
t[i]=temp/b;
x=m[i]%b;
}
lt=lm;
while(t[lt]==0&<>1) lt--;
}
void highx(int m[],int b,int t[]){
for(int i=lt;i>=1;i++) t[i]=0;
for(int i=1;i<=lm;i++){
t[i]+=m[i]*b;}
for(int i=1;i<lm+4;i++){
t[i+1]+=m[i]/10;
t[i]=t[i]%10;
}
while(t[lm]==0&&lm>1) lm--;
for(int i=1;i<=lm;i++) m[i]=t[i];
}
bool cmp(int ans[],int t[]){
if(la!=lt) return la<lt;
for(int i=0;i<=lt;i++) if(ans[i]!=t[i]) return ans[i]<t[i];
return false;
}
void ac(int ans[],int t[]){
if(cmp(ans,t)) {
for(int i=lt;i>0;i--) ans[i]=t[i];
la=lt;
}
}
int main()
{
cin>>n;
for(int i=0;i<=n;i++) cin>>p[i].a>>p[i].b;
sort(p+1,p+1+n,tmp);
m[++lm]=p[0].a;
for(int i=1;i<=n;i++){
highp(m,p[i].b,t);
ac(ans,m);
highx(m,p[i].b,t);
}
for(int i=la;i>0;i--) cout<<ans[i];
}