#include<bits/stdc++.h>
using namespace std;
int n,kl,kr;
struct number{
int n[3002];
int length;
void out()
{
for(int i=length;i>=1;i--)
cout<<n[i];
}
}tmp,ans,add;
struct coin{
int l,r;
}a[1002];
bool cmp(coin x,coin y)
{
return x.l*x.r<y.l*y.r;
}
void times(int x)
{
memset(add.n,0,sizeof(add.n));
add.length=0;
for(int i=1;i<=tmp.length;i++)
{
tmp.n[i]=tmp.n[i]*x;
add.n[i+1]+=tmp.n[i]/10;
tmp.n[i]%=10;
}
for(int i=1;i<=tmp.length+4;i++) {
tmp.n[i]+=add.n[i];
if(tmp.n[i]>=10) {
tmp.n[i+1]+=tmp.n[i]/10;
tmp.n[i]%=10;
}
if(tmp.n[i]!=0) {
tmp.length=max(tmp.length,i);
}
}
return;
}
void muti(int x)
{
memset(add.n,0,sizeof(add.n));
add.length=0;
int k=0;
for(int i=tmp.length;i>=1;i--)
{
k*=10;
k+=tmp.n[i];
add.n[i]=k/x;
if(add.length==0&&add.n[i]!=0)add.length=i;
k%=x;
}
return;
}
bool compare()
{
if(ans.length>add.length)return false;
else if(ans.length<add.length)return true;
else
for(int i=ans.length;i>=1;i--)
{
if(ans.n[i]>add.n[i])return false;
else if(ans.n[i]<add.n[i])return true;
}
}
void change()
{
memset(ans.n,0,sizeof(ans.n));
ans.length=0;
for(int i=add.length;i>=1;i--)ans.n[i]=add.n[i];
ans.length=add.length;
return;
}
int main()
{
cin>>n;
cin>>kl>>kr;
for(int i=1;i<=n;i++)cin>>a[i].l>>a[i].r;
sort(a+1,a+n+1,cmp);
for(int i=1;kl!=0;i++)
{
tmp.n[i]=kl%10;
kl/=10;
}
for(int i=1;i<=n;i++)
{
times(a[i-1].l);
muti(a[i].r);
if(compare())change();
}
ans.out();
system("pause");
return 0;
}
编译错误但没有原因awa