【前端算法】阶乘后的零,两次遍历

简介: 给定一个整数 n,返回 n! 结果尾数中零的数量。

给定一个整数 n,返回 n! 结果尾数中零的数量。



示例 1:


输入: 3

输出: 0


解释: 3! = 6, 尾数中没有零。


示例 2:


输入: 5

输出: 1


解释: 5! = 120, 尾数中有 1 个零.


  • 说明: 你算法的时间复杂度应为 O(log n) 。


解题代码:


/**
 * @param {number} n
 * @return {number}
 */
var trailingZeroes = function(n) {
    let result = 1;
    let i = 1;
    while (i <= 5) {
        result *= i;
        i++;
    };
    var num = 0;
    while (n > 0) {
        n = (n - (n % 5)) / 5;
        num += n;
    }
    return num
};


知识点


  • 求阶乘数字后面的零


末尾0的个数取决于乘法中因子2和5的个数。显然乘法中因子2的个数大于5的个数,所以我们只需统计因子5的个数。


5

55/5 = 1//120 后面一个零

5的倍数的数有: 1024 / 5 = 204

25的倍数的数有:1024 / 25 = 40

125的倍数的数有:1024 / 125 = 8

625的倍数的数有:1024 / 625 = 1

所以1024! 中总共有204+40+8+1=253个因子5

也就是说1024! 末尾有2530

相关文章
|
5天前
|
移动开发 算法 前端开发
前端算法之堆排序
前端算法之堆排序
11 1
|
5天前
|
算法 前端开发
前端算法之快速排序
前端算法之快速排序
11 0
|
5天前
|
算法 前端开发 搜索推荐
前端算法之归并排序
前端算法之归并排序
10 0
|
5天前
|
算法 前端开发
前端算法之基数排序
前端算法之基数排序
9 1
|
5天前
|
算法 前端开发 搜索推荐
前端算法之桶排序
前端算法之桶排序
6 1
|
5天前
|
存储 算法 前端开发
前端算法之计数排序
前端算法之计数排序
9 1
|
5天前
|
算法 前端开发 搜索推荐
前端算法之希尔排序
前端算法之希尔排序
4 0
|
20小时前
|
算法 数据安全/隐私保护 计算机视觉
基于二维CS-SCHT变换和LABS方法的水印嵌入和提取算法matlab仿真
该内容包括一个算法的运行展示和详细步骤,使用了MATLAB2022a。算法涉及水印嵌入和提取,利用LAB色彩空间可能用于隐藏水印。水印通过二维CS-SCHT变换、低频系数处理和特定解码策略来提取。代码段展示了水印置乱、图像处理(如噪声、旋转、剪切等攻击)以及水印的逆置乱和提取过程。最后,计算并保存了比特率,用于评估水印的稳健性。
|
1天前
|
存储 算法 数据可视化
基于harris角点和RANSAC算法的图像拼接matlab仿真
本文介绍了使用MATLAB2022a进行图像拼接的流程,涉及Harris角点检测和RANSAC算法。Harris角点检测寻找图像中局部曲率变化显著的点,RANSAC则用于排除噪声和异常点,找到最佳匹配。核心程序包括自定义的Harris角点计算函数,RANSAC参数设置,以及匹配点的可视化和仿射变换矩阵计算,最终生成全景图像。
|
1天前
|
算法 Serverless
m基于遗传优化的LDPC码NMS译码算法最优归一化参数计算和误码率matlab仿真
MATLAB 2022a仿真实现了遗传优化的归一化最小和(NMS)译码算法,应用于低密度奇偶校验(LDPC)码。结果显示了遗传优化的迭代过程和误码率对比。遗传算法通过选择、交叉和变异操作寻找最佳归一化因子,以提升NMS译码性能。核心程序包括迭代优化、目标函数计算及性能绘图。最终,展示了SNR与误码率的关系,并保存了关键数据。
11 1