30分求条
查看原帖
30分求条
907368
andycode楼主2024/10/31 22:00
#include <bits/stdc++.h>
using namespace std;
struct Per{
    int a,b;
}d[1003];
struct Node{
    int pro[10004],ans[10004],lenp,lena;
}num[1003];
bool cmp(Per x,Per y){
    return x.a*x.b<y.a*y.b;
}
bool cmp2(Node x,Node y){
    if(x.lena>y.lena)
        return 1;
    if(y.lena<x.lena)
        return 0;
    for(int i=x.lena;i;i--){
        if(x.ans[i]>y.ans[i])
            return 1;
        else if(x.ans[i]<y.ans[i])
            return 0;
    }
    return 1;
}
int n;
int main(){
    scanf("%d",&n);
    for(int i=0;i<=n;i++)
        scanf("%d%d",&d[i].a,&d[i].b);
    sort(d+1,d+n+1,cmp);
    num[0].lenp=1,num[0].pro[1]=1;
    /*for(int i=0;i<=n;i++)
        printf("%d %d\n",d[i].a,d[i].b);*/
    for(int i=1;i<=n;i++){
        int l=num[i-1].lenp;
        num[i].lenp=l;
        for(int j=1;j<=l;j++)
            num[i].pro[j]=num[i-1].pro[j]*d[i-1].a;
        for(int j=1;j<=l;j++)
            num[i].pro[j+1]+=num[i].pro[j]/10,num[i].pro[j]%=10;
        while(num[i].pro[num[i].lenp+1])
            num[i].lenp++,num[i].pro[num[i].lenp+1]=num[i].pro[num[i].lenp]/10,num[i].pro[num[i].lenp]%=10;
        for(int j=num[i].lenp;j;j--)
        	num[i].ans[j]=num[i].pro[j];
        num[i].lena=num[i].lenp;
        /*for(int j=num[i].lenp;j;j--)
        	printf("%d",num[i].pro[j]);
        printf("\n");*/
        int r=0;
        for(int j=num[i].lena;j;j--){
            r=r*10+num[i].ans[j];
            num[i].ans[j]=r/d[i].b,r%=d[i].b;
        }
        while(!num[i].ans[num[i].lena] && num[i].lena>1)
            num[i].lena--;
        /*for(int j=num[i].lena;j;j--)
        	printf("%d",num[i].ans[j]);
        printf("\n");*/
    }
    sort(num+1,num+n+1,cmp2);
    for(int i=num[1].lena;i;i--)
        printf("%d",num[1].ans[i]);
    return 0;
}

RE on 4~10

2024/10/31 22:00
加载中...