博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode:Factorial Trailing Zeroes
阅读量:5747 次
发布时间:2019-06-18

本文共 962 字,大约阅读时间需要 3 分钟。

Given an integer n, return the number of trailing zeroes in n!.

Note: Your solution should be in logarithmic time complexity.

分析:题意即为 阶乘尾部的零(求n!中尾部为0的个数)

思路:我们可以对n!进行质因数分解有 n!=2x*3y*5z*...,显然尾部0的个数等于min(x,z),并且我们容易知道min(x,z)==z

因为:阶乘就是1*2*3*...*n

如果我们用[n/k]表示1~n中能被k整除的个数
那么很显然
[n/2] > [n/5] (左边是逢2增1,右边是逢5增1)
[n/2^2] > [n/5^2](左边是逢4增1,右边是逢25增1)
……
[n/2^p] > [n/5^p](左边是逢2^p增1,右边是逢5^p增1)
那么可知n!质因数分解中,2的次幂一定大于5的次幂

于是我们只看n前面有多少个5即可,而n/5就得到了5的个数,还有我们要注意25这种(5和5相乘的结果)

所以还要看n/5里面有多少个5,相当于看n里面有多少个25,还有125,625.。。

代码如下:

class Solution {public:    int trailingZeroes(int n) {        int count=0;        while(n){            count+=n/5;            n=n/5;        }        return count;    }};

或者:

class Solution {public:    int trailingZeroes(int n) {    if (n==0) return 0;    if (n<5 && n>0) return 0;    int count=0;    int i=n/5;    do{        count+=i;        i=i/5;    }  while (i>=1);    return count;}};

  

  

转载于:https://www.cnblogs.com/carsonzhu/p/4677525.html

你可能感兴趣的文章
Spring IoC容器初的初始化过程
查看>>
sql server 触发器
查看>>
[工具]前端自动化工具grunt+bower+yoman
查看>>
自动化测试之WatiN(2)
查看>>
关于完成生鲜电商项目后的一点总结
查看>>
noip2012 普及组
查看>>
第二阶段 铁大Facebook——十天冲刺(10)
查看>>
Java判断是否为垃圾_Java GC如何判断对象是否为垃圾
查看>>
多项式前k项和java_多项式朴素贝叶斯softmax改变
查看>>
java数组只能交换0下标和n_编程练习-只用0交换排序数组
查看>>
centos7安装mysql视频教程_centos7安装mysql(完整)
查看>>
php图片赋值,php如何优雅地赋值
查看>>
【探索HTML5第二弹01】HTML5的前世今生以及来世
查看>>
Failed to connect to remote VM. Connection refused. Connection refused: connect
查看>>
freeze
查看>>
JS时间转时间戳,时间戳转时间。时间显示模式。
查看>>
SAP HANA存储过程结果视图调用
查看>>
设计模式 ( 十八 ):State状态模式 -- 行为型
查看>>
OracleLinux安装说明
查看>>
nova分析(7)—— nova-scheduler
查看>>