• LeetCode 793 阶乘函数后K个零


    基本上算是一道数学题,给出一个数字K,问有多少个非负整数的阶乘末尾有K个零。当初只知道答案只可能是0或5,因为末尾有0必定是2和5的乘积,每过五个数末尾0的数量一定会改变,求出阶乘有多少个2*5就不容易了,因为不可能实际求出阶乘。问题可以转变成求出有多少个因子5,因为2一定比5多,后来看了官方的解题思路,才明白怎么求出5的个数,阶乘中像5,10,15......每过5个数必有一个5的因子,像25,50,75。。。。。。每过5²必定含有两个5,因为第一轮我们已经统计过这些数的其中一个因子5,所以我们在第二轮只需统计另一个因子5,一直重复下去直到第n轮X!中的X比5n要小,综上,我们可以这样求出阶乘中因子5的个数为⌊X/5⌋+⌊X/(52)⌋+⌊X/(532)⌋+⌊X/(54)⌋+⌊X/(5^5)⌋+......这个函数是递增的,我们可以用二分来找到是否有数满足这个条件,如果有,那必定是五个数,没有就返回0。注意变量尽量都用long long,否则很可能出现越界错误。

    class Solution {
    public:
        long long judge(long long x)
        {
            if(x>0)
                return x/5+judge(x/5);
            else
                return 0;
        }
        int preimageSizeFZF(int K) {
            long long l=0,r=0x7ffffffff,mid,now,flag=0;
            while(l<=r)
            {
                mid=l+(r-l)/2;
                now=judge(mid);
                if(now>K)
                {
                    r=mid-1;
                }
                else if(now<K)
                {
                    l=mid+1;
                }
                else
                {
                    flag=1;break;
                }
            }
            if(flag) return 5;
            else return 0;
        }
    };
    
  • 相关阅读:
    ExtJS4 Panel中嵌套PDF
    从 JavaScript 数组去重谈性能优化(转)
    js中top、parent、frame
    “N”在Sql Server字段类型中的重要性 (转)
    IE下lineheight的BUG解决 (转)
    ExtJS4 Dialog
    Chrome启动后打开第一个网页很慢的解决方案(转)
    ExtJS4 Grid改变单元格背景颜色
    form表单
    Detect IFrame Load Event 探索Iframe的加载事件
  • 原文地址:https://www.cnblogs.com/ambition-hhn/p/12818485.html
Copyright © 2020-2023  润新知