首页 > 试题广场 >

阶乘末尾0的数量

[编程题]阶乘末尾0的数量
  • 热度指数:11761 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个非负整数 n ,返回 n! 结果的末尾为 0 的数量。

n! 是指自然数 n! 的阶乘,即 : 
特殊的,  0 的阶乘是 1 。

数据范围: 
进阶:空间复杂度 ,时间复杂度
复杂度要求:
不大于
示例1

输入

3

输出

0

说明

3!=6     
示例2

输入

5

输出

1

说明

5!=120    
示例3

输入

1000000000

输出

249999998
头像 王清楚
发表于 2021-04-08 12:15:58
观察一下10以内的数字互相乘,会发现,只有 相乘会产生0,而且 ,...所以我们只需要看一下 以内 能拆出多少对 然后我们可以发现,有5因子的数比有2因子的数要少,所以我们就看能拆出来多少5就可以了,因为肯定能有足够数量的因子2来匹配。 所以阶乘末尾0的数量就是 中能拆出来的5的数量。 展开全文
头像 月关雨辰
发表于 2021-09-11 16:42:56
因为一个数的阶乘只有是5或5的倍数乘以2的时候才会出现尾随零,并且从阶乘中可以看出来2的个数远大于5的个数,所以由此可以推得求一个数的尾随零数的个数只需看它能除以几个5就有几个零了。从算法二可以知道本质就是求可以整除5的个数,可以得到 其中[N/5]表示不大于N中对5倍的贡献一个5,[N/5/5]表 展开全文
头像 牛客516598323号
发表于 2020-09-18 11:03:57
阶乘结果的0和乘数的2和5有关,而2的个数远多于5,所以只要数5。而5,25,125的倍数是自相似的,所以可以用递归。时间复杂度O(logN)。参考:https://blog.csdn.net/qq_36705705/article/details/106890761用例通过率: 100.00% 运 展开全文
头像 未来0116
发表于 2021-07-28 22:55:44
一.题目描述给定一个非负整数N,返回N!结果的末尾为0的数量。N!是指自然数N的阶乘,即:二.算法(数学)因为一个数的阶乘只有是5或5的倍数乘以2的时候才会出现尾随零,并且从阶乘中可以看出来2的个数远大于5的个数,所以由此可以推得求一个数的尾随零数的个数只需看它能除以几个5就有几个零了。下面是完整代 展开全文
头像 LifelongCode
发表于 2020-12-28 15:12:31
思路:每一对(2,5)就会产生一个0,将问题转换为:n!有多少对(2,5)进一步将问题简化为: n!拆分成的因子中有多少个5(为什么是5,不是2,是因为2出现的频率比5高)解法1:效率低,时间复杂度为N*logN public static int zeroNum1(in 展开全文
头像 小洋芋热爱NLP
发表于 2021-08-08 15:32:44
- 题目描述:- 题目链接:https://www.nowcoder.com/practice/aa03dff18376454c9d2e359163bf44b8?tpId=196&&tqId=37136&rp=1&ru=/activity/oj&qru=/ta 展开全文
头像 OfferCall!
发表于 2021-04-06 07:59:37
能够在尾部得出0,是由于存在局部的2*5,而在阶乘中,能够提取的2的数量一定大于5的数量,所以尾部0的数量取决于能够提取出多少个因子5,那么从1到n能提取出多少个5呢?这里有一个公式: 对于一个数N,它所包含5的个数为:N/5 + N/ + N/ + ...,其中N/5表示不大于N的数中5 展开全文
头像 牛一霸
发表于 2021-07-25 22:26:08
题目:阶乘末尾零的数量 描述:给定一个非负整数N,返回N!结果的末尾为0的数量。 N!是指自然数N的阶乘,即:N!=1∗2∗3…(N−2)∗(N−1)∗N。 示例1:输入:3,返回值:0 说明:3!=6 示例2:输入:5,返回值:1 说明:5!=120 示例3:输入:1000000000,返回值:2 展开全文
头像 ren卷卷
发表于 2022-02-24 16:49:45
public class Solution { /** * the number of 0 * @param n long长整型 the number * @return long长整型 */ public long thenumberof0 展开全文
头像 有名
发表于 2021-07-27 12:23:16
题目 描述 给定一个非负整数 NN,返回 N!N! 结果的末尾为 00 的数量。N!N! 是指自然数 NN 的阶乘,即:。 方法一 思路 题目要求计算阶乘末尾0的数量,最直接的方法就是通过计算n!,得出其值,然后在逐个的找出末尾的0,得出末尾0的数量; 考虑到N的范围比较大,使用long会溢出,所 展开全文

问题信息

难度:
27条回答 3268浏览

热门推荐

通过挑战的用户

查看代码
阶乘末尾0的数量