172.阶乘后的0

2020-03-18

阶乘后的零

给定一个整数 n,返回 n! 结果尾数中零的数量。

示例:

输入: 3

输出: 0

解释:
3! = 6, 尾数中没有0

输入: 5

输出: 1

解释:
5! = 120, 尾数中有一个0

解释:
L D R
E O E I I
E C I H N
T S G

-->

说明:

  • 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

-->

题解:

思路1: 数学归纳

尾数为0就是2x5或者是10,分析可知每5个数有一个2x5,每25个数多一个5

/**
 * @param {number} n
 * @return {number}
 */
var trailingZeroes = function (n) {
  let count = 0;
  while (n > 1) {
    count += Math.floor(n / 5); // 每5个数有一份5,所以n/5得到5的个数
    // 分析可知25 = 5 x 5; 125 = 5 x 5 x 5;每25个数多一个5, 每125个数再多一个5
    // 所以n/5取了第一次后,要再÷5取每25多出来的5.再取125多出来的5以此类推
    n = Math.floor(n / 5); 

  }
  return count;
};

原文地址:https://www.cnblogs.com/lanpang9661/p/12515316.html

时间: 2024-08-30 12:43:07

172.阶乘后的0的相关文章

LeetCode 172. 阶乘后的零(Factorial Trailing Zeroes)

172. 阶乘后的零 LeetCode172. Factorial Trailing Zeroes 题目描述 给定一个整数 n,返回 n! 结果尾数中零的数量. 示例 1: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零. 示例 2: 输入: 5 输出: 1 解释: 5! = 120, 尾数中有 1 个零. 说明: 你算法的时间复杂度应为 O(log n) . Java 实现 class Solution { // 递归思路 public static int trailingZe

LeetCode【172. 阶乘后的零】

最开始一看,就觉得挺简单,就是先算出阶乘的值,再除以10,如果%为0,count++,然后s=s/10,如果不为0,就直接输出. class Solution { public int trailingZeroes(int n) { int i; int s = 1; int count = 0; for(i = 1;i <= n;i++) { s = s*i; } while(s != 0) { if(s % 10 == 0) { count++; s = s / 10; } else { b

LeetCode 172. 阶乘后的零

给定一个整数 n,返回 n! 结果尾数中零的数量. 示例 1: 输入: 3输出: 0解释: 3! = 6, 尾数中没有零. 示例 2: 输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零. 说明: 你算法的时间复杂度应为 O(log n) .算法:我们只需要考虑n!中有多少个5即可. class Solution { public: int trailingZeroes(int n) { return n<5?0:n/5+trailingZeroes(n/5); } }; 原文地

leetcode——172.阶乘后的零

超时: 1 class Solution: 2 def trailingZeroes(self, n: int) -> int: 3 if n<5: 4 return 0 5 b=n 6 i=n 7 while i>1: 8 i=i-1 9 b=b*i 10 11 j=0 12 t=10 13 while b%t==0: 14 j=j+1 15 t=t*10 16 return j 再次超出时间限制: 1 class Solution: 2 def trailingZeroes(self

【每天一题】LeetCode 172. 阶乘后的零

开源地址:点击该链接 题目描述 https://leetcode-cn.com/problems/factorial-trailing-zeroes 给定一个整数 n,返回 n! 结果尾数中零的数量. 示例 1: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零. 示例 2: 输入: 5 输出: 1 解释: 5! = 120, 尾数中有 1 个零. 说明: 你算法的时间复杂度应为O(logn). 解题思路 最直接的解法就是先求出 n! 等于多少 然后计算尾数中零的数量,该方法的复杂度

light_oj 1138 求阶乘后导零的个数

light_oj 1138  求阶乘后导零的个数 N - Trailing Zeroes (III) Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit Status Practice LightOJ 1138 Description You task is to find minimal natural number N, so that N! contains exactly Q 

算法-计算阶乘n!末尾0的个数

算法逻辑转载自计算阶乘n!末尾0的个数: 问题描述    给定参数n(n为正整数),请计算n的阶乘n!末尾所含有"0"的个数.    例如,5!=120,其末尾所含有的"0"的个数为1:10!= 3628800,其末尾所含有的"0"的个数为2:20!= 2432902008176640000,其末尾所含有的"0"的个数为4. 计算公式    这里先给出其计算公式,后面给出推导过程.    令f(x)表示正整数x末尾所含有的&q

NYOJ1026 阶乘末尾非0 【模板】

阶乘末尾非0 时间限制:2000 ms  |  内存限制:65535 KB 难度:3 描述 我们的问题很是简单,n!末尾非0数是几? 比如n=5的时候,n!=120,那么n!末尾非0数是2. 输入 多组数据, 每组数据占一行,每行一个整数0<=n<=10^1000 输出 n!末尾非0数. 样例输入 5 样例输出 2 直接用的网上的模板 /*==================================================*| 阶乘最后非零位,复杂度 O(nlogn) \*==

在虚函数的声明的参数列表后加上“=0”就将函数变成了纯虚函数

在虚函数的声明的参数列表后加上“=0”就将函数变成了纯虚函数class Base{ virtual void function()=0;}我们不需要为纯虚函数Base::function()提供任何定义,那些声明了纯虚函数的类就是抽象类.任何试图创建一个抽象类对象的操作都会导致编译器错误.如果一个派生Base并且重写了Base::function()函数,它就成为了具体的类.class Derived :public Basae { void function(); } 通常将抽象类用作接口声明