本文主要是介绍LintCode 2. 尾部的零,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这道题,分析如下,1到n的阶乘末尾的0数有多少个,只需要统计出n分别除以5,25,125...等5的整数次幂即可,然后相加就可得到n末尾包含的0的个数。每次5出现首先2,4都比5小,所以对于新出现的5的整数次幂的倍数时,前面肯定已经存在了足够的2使得2*5=10,从而在末尾产生新的0。
我的实现过程如下:
class Solution {
public:/** @param n: A long integer* @return: An integer, denote the number of trailing zeros in n!*/long long trailingZeros(long long n) {// write your code here, try to do it without arithmetic operators.long long sum=0;while(n!=0){sum+=n/5;n=n/5;}return sum;}
};
这篇关于LintCode 2. 尾部的零的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!