noip2012国王游戏

#include
#include
#include
#include
#include
using namespace std;
const int maxn=1010;
int n,now[maxn],ans[maxn],cur[maxn];
struct node{
    int a,b;
}s[maxn];
void ch(int x){
    for(int i=1;i<=now[0];i++){
        now[i]*=x;
    }
    for(int i=1;i<=now[0];i++){
        if(now[i]>=10) now[i+1]+=now[i]/10;
        now[i]%=10;
    }
    while(now[now[0]+1]) ++now[0];
}
bool cmp(node x,node y){
    return x.a*x.b }
void div(int x){
    int t=0;
    for(int i=now[0];i;i--){
        t=t*10+now[i];
        cur[i]=t/x;
        if(cur[i]!=0&&cur[0]==0){
            cur[0]=i;
        }
        t%=x;
    }
    int f=false;
    if(cur[0]>ans[0]){
        f=true;             
    }
    else{
        if(cur[0]             f=false;
            return ;
        }
        else{
            for(int j=ans[0];j>=1;j--){
                if(cur[j]                     f=false; break;
                }
                if(cur[j]>ans[j]) {
                    f=true; break;
                }
            }
        }
    }
    if(f){
        for(int j=1;j<=cur[0];j++){
            ans[j]=cur[j];
        }
        ans[0]=cur[0];
    }
}
int main(){
    scanf("%d",&n);
    int a1,b1;
    scanf("%d%d",&a1,&b1);
    for(int i=1;i<=n;i++){
        scanf("%d%d",&s[i].a,&s[i].b);
        /*scanf("%s",s);
        int len=strlen(s)
        for(int j=0;j             a[i][len-j]=s[j]-'0';
        }*/
    }
    sort(s+1,s+1+n,cmp);
    ans[0]=1; ans[1]=1;
    now[0]=1; now[1]=1;
    //ch(6); div(3);
    ch(a1);
    /*for(int i=now[0];i;i--){
        cout<     }
    cout<     for(int i=1;i<=n;i++){
        ch(s[i].a);
        div(s[i].a*s[i].b);
    }
    for(int j=ans[0];j>=1;j--){
        printf("%d",ans[j]);
    }
    cout<     return 0;
}

你可能感兴趣的:(noip冲刺复习,贪心专题,高精度)