zoukankan      html  css  js  c++  java
  • 魔法石的诱惑

    魔法石的诱惑

    题目描述

    修 罗王远远地看见邪狼狂奔而来,问道:“慌慌张张地跑什么?” 邪狼大口大口地喘气:“我路过一家魔法石店,看到摆着那么多高阶魔法石,我就跑进去抢了一大袋。” 修罗王怒道:“光天化日,朗朗乾坤,众目睽睽之下,你也敢抢?” 邪狼:“我抢魔法石的时候,压根儿就没看见人,眼里只看见魔法石了。” 修罗王:“……” 其实邪狼的贪婪很容易理解,因为高阶魔法石有一个特征,即它的重量进行阶乘运算后末尾有几个0,就拥有同等重量普通魔法石几倍的魔法力。例如 5!=5×4×3×2×1=120,而120结尾包含1个零,这意味着该魔法石拥有同等重量的普通的魔法石1倍的魔法力。你的任务是找到最小自然数N,使 N!在十进制下包含Q个零。

    输入

    一个数Q(0≤Q≤108

    输出

    如果误解,输出“No solution”,否则输出N。

    样例输入

    2
    

    样例输出

    10
    当0 < n < 5时,f(n!) = 0;
      当n >= 5时,f(n!) = k + f(k!), 其中 k = n / 5(取整)。
     
      n!后多少个零。数学问题。有多少个与5有关。
    知道这一点后,不难找出有q个零的n!。  范围从5-2<<31-1 用二分法也不过找30次。
     
    #include <cstdio>
    #include <cmath>
    #include <algorithm>
    using namespace std;
    int jc(int n){  //求n!后的0的个数
        int sum=0;
        while(n){
            sum+=n/5;
            n/=5;
        }
        return sum;
    }
    int erfen(int n,int low ,int hight){
        int mid,c ;
        while(low<=hight){
            mid =(low+hight)/2;
            c=jc(mid);
            if(c==n)    return mid;
            else
                if(c>n) hight = mid-1;
            else low=mid+1;
        }
        return -1;
    }
    int main(){
        int n,ans;
        scanf("%d",&n);
        if(n==0)    printf("1
    ");
        else{
            ans=erfen(n,5,200000000);
            if(ans==-1) printf("No solution
    ");
            else{
                ans=ans-ans%5;
                printf("%d
    ",ans);
            }
        }
    }

  • 相关阅读:
    Windows开启telnet服务 + 连接失败处理
    注册表比较工具
    wmic命令
    python netifaces模块
    【转】wireshark基本用法及过虑规则
    设置Intel网卡以抓取报文的vlan tag
    【转】 中兴OLT-C300常用命令
    Iris分类以及数组reshape想到的
    关于plot画图的原理
    Python的rand vs randn以及linspace
  • 原文地址:https://www.cnblogs.com/acmtime/p/5715846.html
Copyright © 2011-2022 走看看