首页 > 2. 尾部的零

2. 尾部的零

题目

设计一个算法,计算出n阶乘中尾部零的个数

样例

11! = 39916800,因此应该返回 2

 

题解

一开始就用最简单对1-n找出5的个数,然后超时了。

虽然都直到是要找5,因为2肯定比5多,所以5的个数就是0的个数,只是计算方法得简单明了。

既然1-n里5的个数就是0,我们就看看规律。

5 10 15 。。。n 那n/5不就是n内有5因子的数量吗?没错 count += n/ 5

但里面有25,50这种有2个5因子的, count += n/25 ,如此类推 count += n / 5**x 直到5**x > count

上面写法只是反着来,原理是一样的。

 

def trailingZeros(n):count = 0while n > 5:count += n / 5n = n / 5return count

 

转载于:https://www.cnblogs.com/usp10/p/8611759.html

更多相关:

  • 如何使用Python快速高效地统计出大文件的总行数, 下面是一些实现方法和性能的比较。1.readline读所有行使用readlines方法读取所有行:def readline_count(file_name):return len(open(file_name).readlines())2.依次读取每行依次读取文件每行内容进行计数:...

  • 关于逆序数的问题描述如下: 已知数组nums,求新数组count,count[i]代表了在nums[i]右侧且比 nums[i]小的元素个数。 例如: nums = [5, 2, 6, 1], count = [2, 1, 1, 0]; nums = [6, 6, 6, 1, 1, 1], count = [3, 3, 3, 0,...

  • EditText 限定中文8个英文16个的解决方法。 在EditText上控件提供的属性中有限定最大最小长度的方法。可是,对于输入时,限定中文8个英文16个时,怎么办?相当于一个中文的长度是两个英文的长度。 原理就不说了。自己看一下android的源代码。 以上直接上代码。 private final int maxLen =...

  • /**172. Factorial Trailing Zeroes *2016-6-4 by Mingyang* 首先别忘了什么是factorial,就是阶乘。那么很容易想到需要统计* (2,5)对的个数,因为2×5=10。但是这个条件放松一下就会发现其实只要数5的个数就好了,* 因为2实在是比5要多的多。那么这道题目就转...

  • 给定整数 n 和 k,找到 1 到 n 中字典序第 k 小的数字。 注意:1 ≤ k ≤ n ≤ 10^9。 示例 : 输入: n: 13 k: 2 输出: 10 解释: 字典序的排列是 [1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9],所以第二小的数字是 10。 字典排序数的实现...

  • 找规律题 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … 3/1 3/2 3/3 … 4/1 4/2 … 5/1 … … 我们以Z字形给上表的每一项编号。第一项是1/1,然后是1/2,2/1,...

  • 在 UIView 中有一个autoresizingMask的属性,它对应的是一个枚举的值(如下),属性的意思就是自动调整子控件与父控件中间的位置,宽高。 enum {    UIViewAutoresizingNone                 = 0,    UIViewAutoresizingFlexibleLeftMarg...

  • 今天去了长城,人很多,票价也很贵,如果票价再低会不会人更多,这也许就是社会,平民化价格就是很多人,不到长城非好汉,这句话影响了多少人,如果一个平民说的或者没有传播开来也就不会有这么大影响力,这也许就是传播学。常自省,常反思如何实践要事第一,或许这样的人生最充实。...