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

原创 2018年04月16日 20:38:42

32位编译器和64位编译器数据字节数(一个字节=8位)
数据范围

编译器
int类型:4个字节32位(4*8),寻址空间为2^32,数据范围-2^31~2^31
long long类型:是一种超长整型,8字节64位(8*8),寻址空间为2^64数据范围-2^63~2^63

题目描述:
设计一个算法,计算出n阶乘中尾部零的个数
样例:11!=39916800,因此返回2

分析:
数字n的阶乘能够分解为素数幂的乘积,既n!=2^x*3^y.……5^z……
显然,2*5=10产生一个0,且2的个数大于5的个数既x>z,本题既求z的大小

1到n中5的倍数有5,10,15,20,25,30…50…,n/5为n中能被5整除的数的个数

5^2=25提供2个5,1到n中25的倍数有25,50,75,100……,n/25为n中能被5*5整除的数的个数,是25的倍数一定是5的倍数并在第一次查询时已经提供了一个5,因此在第二次查询时可以再提供(2-1)一个5

5^3=125提供3个5,1到n中125的倍数有125,250,……,n/125为n中能被125整除的数的个数,是125的倍数一定是5和25的倍数,在上两次查询时已经提供了2个5,因此在第3次查询是可以在提供(3-2)一个5

以此类推,z=n/5+n/(5^2)+n/(5^3)……直到n/(5^a)<0

代码如下:

long long trailingZeros(long long n){
    long long num;
    while(n)
    {
        num+=n/5;
        n/=5;
    }
    return num;
}

当condition为任意非零值时,既条件为真时,一直执行目标语句。

while(condition){
    statement(s);
}

Public与Private的区别

Public与Private的区别 在英文中Public的含义是:共有的、公有的意思;Private的含义是:私有的、私人的意思。然而,他们在编程上的区别又有什么呢?我们先看看Public的含义:他的...
  • shawls
  • shawls
  • 2001-06-03 10:37:00
  • 638

lintcode第二题 计算n阶乘中尾部零的个数

原文地址:http://blog.csdn.net/surp2011 正文 题目 设计一个算法,计算出n阶乘中尾部零的个数 样例  11! = 39916800,因此应该...
  • nwsuaf_uestc
  • nwsuaf_uestc
  • 2017-12-13 10:23:49
  • 292

计算n阶乘中尾部零的个数

写在前面本来觉得问题挺容易的,不打算记录,谁知道一不小心,还真没做出来。最终凭借“朴实”的算法思想解决了问题,但是其中的曲折还真是汗颜。科学的思维指导确实必不可少,“野路子”的朴素的战斗理论不论是效率...
  • surp2011
  • surp2011
  • 2016-04-16 15:17:08
  • 7348

计算n阶乘中尾部0的个数

这里写代码片 class Solution { /* * param n: As desciption * return: An integer, denote the n...
  • Next_Second
  • Next_Second
  • 2016-04-01 09:34:44
  • 1786

<LeetCode> 题2:n阶乘尾部零的个数

题目描述:设计一个算法,计算出n阶乘中尾部零的个数。注意:时间复杂度为O(lgn)。思路:要求n的阶乘,就是求1到n这n个数相乘。在这1到n个数当中,只有2和5相乘的结果才会出现0,其中10的倍数也可...
  • u013003827
  • u013003827
  • 2016-07-11 14:45:22
  • 1212

Lintcode 尾部零的个数

Lintcode 尾部的零 设计一个算法,计算出n阶乘中尾部零的个数 样例 11! = 39916800,因此应该返回 2 挑战 O(logN)的时间复杂度 分析:首先想到的方法是计...
  • LBF8023
  • LBF8023
  • 2015-10-08 20:00:06
  • 636

请设计一个算法,计算n的阶乘有多少个尾随零。 给定一个int n,请返回n的阶乘的尾零个数。保证n为正整数

我们知道只有当两个数相乘或者单个数为10的倍数时,才有可能增加尾随零,也就是说当阶乘中出现2*5的时候,一定会产生尾随零。 由于能被2整除的频率要远大于被5整除的频率,那么实际上,阶乘式子中出现5的...
  • tc1175307496
  • tc1175307496
  • 2017-01-07 16:31:10
  • 364

算法题:阶乘尾零

题目描述请设计一个算法,计算n的阶乘有多少个尾随零。给定一个int n,请返回n的阶乘的尾零个数。保证n为正整数。 测试样例:5返回:1#include using namespace std; ...
  • liuhuiyan_2014
  • liuhuiyan_2014
  • 2015-08-18 13:46:04
  • 602

一步一步写算法(之n!中末尾零的个数统计)

原贴地址: http://blog.csdn.net/feixiaoxing/article/details/6856936 【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系...
  • cnnbwr
  • cnnbwr
  • 2014-04-10 09:17:22
  • 263

LeetCode N阶乘的尾数为0的个数

原题如下 Given an integer n, return the number of trailing zeroes in n!. Note: Your solution sho...
  • dddongdong
  • dddongdong
  • 2015-01-27 10:19:25
  • 959
收藏助手
不良信息举报
您举报文章:设计一个算法,计算出n阶乘中尾部零的个数
举报原因:
原因补充:

(最多只允许输入30个字)