• luoguP1080 国王游戏 题解(NOIP2012)(贪心+高精)


    luoguP1080 国王游戏 题目

    #include<iostream>
    #include<cstdlib>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #define il inline
    #define rg register
    #define ll long long
    #define N 10001
    #define inf 1000000010
    using namespace std;
    int n,a,b;
    struct T{
        int le,ri;
    }h[N];
    ll now[N],ans[N],zs[N];
    int len1,alen,flag;
    il void re(rg int &x);
    int cmp(const T &x,const T &y);
    void solve(rg int k);
    void add(rg int k);
    int main()
    {
        re(n),re(a),re(b);
        for(rg int i=1;i<=n;++i)
            re(h[i].le),re(h[i].ri);
        sort(h+1,h+n+1,cmp);
        while(a)
            now[++len1]=(a%10),a/=10;
        for(rg int i=1;i<=n;++i)
            solve(i),add(i);
        for(rg int i=len1;i>=1;--i){
            if((!flag)&&(!ans[i]))continue;
            cout<<ans[i];
            flag=1;
        }
        return 0;
    }
    
    il void re(rg int &x){
        rg int res=0,w=1;char c=getchar();
        while((c<'0'||c>'9')&&c!='-')c=getchar();
        if(c=='-')w=-1,c=getchar();
        while(c>='0'&&c<='9')res=(res<<3)+(res<<1)+c-'0',c=getchar();
        x=w*res;
    }
    int cmp(const T &x,const T &y){
        return (x.le*x.ri)<(y.le*y.ri);
    }
    void solve(rg int k){
        memset(zs,0,sizeof(zs));
        rg int c=h[k].ri,p=0;
        for(rg int i=len1;i>=1;--i){
            p=p*10+now[i];
            zs[i]=p/c,p%=c;
        }
    
        for(rg int i=len1;i>=1;--i){
            if(ans[i]==zs[i])continue;
            if(ans[i]>zs[i])break;
            memcpy(ans,zs,sizeof(zs));
            break;
        }
    }//除以自己右手上的值统计
    void add(rg int k){
        rg int c=h[k].le;
        for(rg int i=1;i<=len1;++i)
            now[i]*=c;
        for(rg int i=1;i<=len1;++i){
            if(now[i]>=10){
                rg int w=i;
                while(now[w]>=10){
                    now[w+1]+=now[w]/10,now[w]%=10,w++;
                    if(w>len1)len1=w;
                }
            }
        }
        while(now[len1+1]>=10)
            now[len1+1]=(now[len1]/10),now[len1]%=10,len1++;
    }
  • 相关阅读:
    PHP $_SERVER 变量
    $_SERVER变量 以及 PHP 使用 $_SERVER['PHP_SELF'] 获取当前页面地址及其安全性问题
    Funs
    搞定,务必记得要以最简便的整合资源来做
    还是要好好研究开源的php
    重回编程
    登录弹窗代码(居中)
    测试工具了解指南
    工作总结1
    HTML5 contextmenu隐藏鼠标右键菜单
  • 原文地址:https://www.cnblogs.com/cjoierljl/p/8901695.html
Copyright © 2020-2023  润新知