LintCode 2. 尾部的零

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

样例

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

挑战

O(logN)的时间复杂度。

解:2*5=10;可当n!展开,观察得2的个数肯定比5的个数多,所以只需统计n!中5的个数即可知尾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>5)
        {
            sum+=n/5;
            n=n/5;
        }
        return sum;
    }
};

原文地址:https://www.cnblogs.com/zslhg903/p/8361847.html

时间: 2024-10-19 02:43:11

LintCode 2. 尾部的零的相关文章

LintCode 尾部的零

设计一个算法,计算出n阶乘中尾部零的个数 样例 11! = 39916800,因此应该返回 2 分析:0的个数=5的倍数+5^2的倍数+5^3的倍数+5^4的倍数+5^5的倍数+-- class Solution { public: // param n : description of n // return: description of return long long trailingZeros(long long n) { long count=0;//一定是long~~~~ for(

2. 尾部的零【简单】

设计一个算法,计算出n阶乘中尾部零的个数. 思路:0的个数取决于5因子的个数,5的一次方对答案贡献一个0,5的平方贡献两个0,5的三次方贡献3个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) {

2.尾部的零

题目要求出阶乘尾部后有多少个0,其实就是问阶乘里面有多少个10.所以这个问题也就可以等效于问表示阶乘这个数的质因数分解总共有多少个2与5,而2的个数肯定比5的个数多,所以我们只需要求出有多少个5就行了.而质因数分解一个数里有多少个5可以用公式:\(n/5+n/5/5+n/5/5/5+--\)来进行计算. 很多博客都介绍了这种算法,但是没有讲解具体的计算原理(或许是因为有些简单).这里,我们假设要求1到100里质因数分解后5的个数,首先肯定是先找5的倍数,即5,10,15,20,25--.注意到它

[LintCode] Trailing Zeroes 末尾零的个数

Write an algorithm which computes the number of trailing zeros in n factorial. Have you met this question in a real interview? Yes Example 11! = 39916800, so the out should be 2 Challenge O(log N) time s

[LintCode] Move Zeroes 移动零

Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements. Notice You must do this in-place without making a copy of the array. Minimize the total number of operations. Exampl

LintCode 刷题记录

1. A + B 问题:给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符. 思路:使用^来求当前位置上的值,用&来求每个位置上的进位,进位向前移动一位后继续循环,直到进位为0. class Solution { public: /* * @param a: The first integer * @param b: The second integer * @return: The sum of a and b */ int aplusb(int a, int b) { // w

2017校招常考算法题归纳&典型题目汇总

2017校招即将来临,我们为大家整理了2017校招的常考算法类型,以及对应的典型题目. 另附参考答案地址:http://www.jiuzhang.com/solution/ 数学 尾部的零 斐波纳契数列 x的平方根 x的平方根 2 大整数乘法 骰子求和 最多有多少个点在一条直线上 超级丑数 比特位操作 将整数A转换为B 更新二进制位 二进制表示 O(1)时间检测2的幂次 二进制中有多少个1 动态规划 编辑距离 正则表达式匹配 交叉字符串 乘积最大子序列 二叉树中的最大路径和 不同的路径 通配符匹

leetcode:Factorial Trailing Zeroes

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如果我们

OC基础回顾(十四)文件加载与保存

Cocoa提供两个处理文件的通用类:属性列表和对象编码. 1.属性列表 在Cocoa中,有一个类名为属性列表(property list)的对象,通常简写为plist.这些列表包含 Cocoa知道如何操作的一组对象.具体来讲,Cocoa知道如何将它们保存到文件中并进行加载.属性列表类包括NSArray.NSDictionary.NSString.NSNumber.NSDate和NSData,以及它们的可修改形态变体(只要它们拥有前缀为Mutable的类). 1.1 NSDate NSDate是C