RE!!求调!!!
查看原帖
RE!!求调!!!
1556772
Viajero楼主2025/7/23 17:17

代码如下,,,本人还不太熟悉高精度,,,

#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&&lt>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];
}
2025/7/23 17:17
加载中...