求助0分
查看原帖
求助0分
338147
01bit楼主2021/6/12 13:42
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
int n;
struct hn{
    int a[10005];
    hn(){
        a[0]=0;
    }
    hn operator*(ll b){
        ll x=0;
        hn c;
        c.a[0]=a[0];
        for(int i=1;i<=a[0];i++){
            c.a[i]=a[i]*b+x;
            x=c.a[i]/10;
            c.a[i]%=10;
        }
        while(x){
            c.a[++c.a[0]]=x%10;
            x/=10;
        }
        return c;
    }
    hn operator/(ll b){
        ll x=0;
        hn c;
        for(int i=1;i<=a[0];i++){
            ll d=x*10+a[i];
            if(d>b)c.a[++c.a[0]]=d/b;
            x=d%b;
        }
        return c;
    }
    bool operator>(hn b){
        if(a[0]>b.a[0])return true;
        else if(a[0]<b.a[0])return false;
        else for(int i=a[0];i>=1;i--)
            if(a[i]>b.a[i])return true;
            else if(a[i]<b.a[i])return false;
        return false;
    }
}sum,ans;
struct p{
    int a,b;
    ll a_b;
}ps[1005];
bool cmp(p a,p b){
    return a.a_b<b.a_b;
}
int main(){
    scanf("%d",&n);
    for(int i=0;i<=n;i++){
        scanf("%d%d",&ps[i].a,&ps[i].b);
        ps[i].a_b=ps[i].a*ps[i].b;
    }
    sort(ps+1,ps+1+n,cmp);
    sum.a[0]=1;sum.a[1]=1;
    sum=sum*ps[0].a;
    for(int i=1;i<=n;i++){
        hn c=sum/ps[i].b;
        if(c>ans)ans=c;
        sum=sum*ps[i].a;
    }
    for(int i=ans.a[0];i>0;i--)
        putchar(ans.a[i]+'0');
    return 0;
}
2021/6/12 13:42
加载中...