80分求助 #6#10RE #11WA
查看原帖
80分求助 #6#10RE #11WA
779236
Amy29楼主2023/8/29 08:41
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define ll long long
const ll N = 10010;
struct node {
    ll a;
    ll b;
    ll lc;
    ll c[N];
}a[N];
ll n;
ll b[N];
bool cmp (node a, node b) {
    return a.a*a.b<b.a*b.b;
}
bool cmp2 (node a, node b) {
    if (a.lc==b.lc) {
        for (ll i=a.lc; i>=1; i--)
            if (a.c[i]!=b.c[i])
                return a.c[i]>b.c[i];
        return 1;
    }
    return a.lc>b.lc;
}
ll cheng (ll a[], ll l, ll x, ll *b) {
    for (ll i=1; i<=l; i++) b[i] = a[i]*x;
    for (ll i=1; i<=l; i++) {
        b[i+1] += b[i]/10;
        b[i] %= 10;
    }
    while (b[l+1]>9) {
        l++;
        b[l+1] += b[l]/10;
        b[l] %= 10;
    }
    if (b[l+1]) l++;
    return l;
}
ll chu (ll *a, ll l, ll x) {
    ll t=0, p=0;
    bool f = 0;
    for (ll i=l; i>=1; i--) {
        t = t*10+a[i];
        if (t<x) {
            if (f) b[++p]=0;
            continue;
        }
        f = 1;
        b[++p] = t/x;
        t %= x;
    }
    for (ll i=1; i<=p; i++) a[i] = b[p-i+1];
    return p;
}
int main()
{
    scanf("%lld", &n);
    scanf("%lld%lld", &a[0].a, &a[0].b);
    for (ll i=1; i<=n; i++)
        scanf("%lld%lld", &a[i].a, &a[i].b);
    sort(a+1, a+1+n, cmp);
    a[0].c[1] = 1;
    a[0].lc = 1;
    for (ll i=1; i<=n; i++)
        a[i].lc = cheng(a[i-1].c, a[i-1].lc, a[i-1].a, a[i].c);
    for (ll i=1; i<=n; i++)
        a[i].lc = chu(a[i].c, a[i].lc, a[i].b);
    sort(a+1, a+1+n, cmp2);
    for (ll i=a[1].lc; i>=1; i--)
        printf("%lld", a[1].c[i]);
    return 0;
}

2023/8/29 08:41
加载中...