• Java实现 LeetCode 793 阶乘函数后K个零 (分析)


    793. 阶乘函数后K个零

    f(x) 是 x! 末尾是0的数量。(回想一下 x! = 1 * 2 * 3 * … * x,且0! = 1)

    例如, f(3) = 0 ,因为3! = 6的末尾没有0;而 f(11) = 2 ,因为11!= 39916800末端有2个0。给定 K,找出多少个非负整数x ,有 f(x) = K 的性质。

    示例 1:
    输入:K = 0
    输出:5
    解释: 0!, 1!, 2!, 3!, and 4! 均符合 K = 0 的条件。

    示例 2:
    输入:K = 5
    输出:0
    解释:没有匹配到这样的 x!,符合K = 5 的条件。
    注意:

    K是范围在 [0, 10^9] 的整数。

    class Solution {
     
         // 按照数据规律求解阶乘
         // 1个5      5   1
         // 2个5 =    25  6   实际相当于 5个1个5,然后再加25自身是两个5,所以得到的是 5+1 = 6
         // 3个5 =    125 31  相当于5个25,然后加自身125又多了一个5 所以的(5+1)*5+1=31
         // 按照这个规律,则后续公式可以f(2)=f(1)*5+1 f(1)=1 则 f(x+1) = f(x)*5+1  x是5的次幂数
        
       public int preimageSizeFZF(int K) {
      int last=1;
        while(last<K)
            last=5*last+1;
        while(last>1){
            if(last-1==K)
                return 0;
            last=(last-1)/5;
            K%=last;
        }
        return 5;
        }
    }
    
  • 相关阅读:
    Docker之路-docker架构
    Docker之路-认识docker
    Docker之路-版本选择及安装
    Golang理解-集合
    大话算法-动态规划算法
    运维职责
    Golang理解-匿名结构体
    DotNetty项目基本了解和介绍
    变量声明在循环体内还是循环体外的争论
    SqlServer与MySql语法比较
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13074546.html
Copyright © 2020-2023  润新知