zoukankan      html  css  js  c++  java
  • YbtOJ练习:贪心 例题4国王游戏

    虽然这道题是一道例题,但是因为它用到了我不大熟悉的高精度算法,所以还是决定写一写。

    至于证明过程相信无论是在书上,还是网上,聪明的你都已经知道了。

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1010;
    int n,mul[N*4],Div[N*4],ans[N*4],temp[N*4];
    struct node {
        int l,r;
        bool operator < (const node &G) const
        {
            return l*r<G.l*G.r;
        }
    }hands[N];
    void multify(int x)
    {
        for(int i=1;i<=mul[0];i++) mul[i]*=x;
        for(int i=1;i<=mul[0];i++) 
        {
            mul[i+1]+=mul[i]/10;
            mul[i]%=10;
        }
        while(mul[mul[0]+1])
        {
            mul[0]++;
            mul[mul[0]+1]+=mul[mul[0]]/10;
            mul[mul[0]]%=10;
        }
    }
    void Divide(int x)
    {
        memcpy(temp,mul,sizeof(mul));
        Div[0]=mul[0];
        int t=0;
        for(int i=temp[0];i;i--)
        {
            t=t*10+temp[i];
            if(t>=x)
            {
                Div[i]=t/x;
                t%=x;
            }
            else Div[i]=0;
        }
        while(Div[Div[0]]==0&&Div[0]>1) Div[0]--;
    }
    void max()
    {
        if(Div[0]>ans[0]) memcpy(ans,Div,sizeof(Div));
        for(int i=Div[0];i;i--)
         if(Div[i]>ans[i])
         {
             memcpy(ans,Div,sizeof(Div));
             break;
         }
    }
    void print()
    {
        while(ans[ans[0]]==0&&ans[0]>1) ans[0]--;
        for(int i=ans[0];i;i--) printf("%d",ans[i]);
    }
    int main()
    {
        scanf("%d",&n);
        scanf("%d%d",&hands[0].l,&hands[0].r);
        for(int i=1;i<=n;i++) scanf("%d%d",&hands[i].l,&hands[i].r);
        sort(hands+1,hands+n+1);
        mul[0]=1;mul[1]=1;
        multify(hands[0].l);
        for(int i=1;i<=n;i++)
        {    
            Divide(hands[i].r);
            multify(hands[i].l);
            max();
        }
        print();
        return 0;
    }
  • 相关阅读:
    BaseServlet的编写
    两个线程交替打印1-100
    java集合中的HashMap源码分析
    mybatis一级缓存与二级缓存的原理
    mybatis的执行流程
    spring IOC的理解
    一文彻底搞懂面试中常问的各种“锁”
    Dubbo相关的基础
    Servlet基础
    文件传输基础
  • 原文地址:https://www.cnblogs.com/smartljy/p/13433047.html
Copyright © 2011-2022 走看看