您好,欢迎访问代理记账网站
移动应用 微信公众号 联系我们

咨询热线 -

电话 15988168888

联系客服
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

172 Factorial Trailing Zeroes(阶乘后的零)————附带详细思路和代码

文章目录

  • 0 效果
  • 1 题目
  • 2 思路
  • 3 代码

0 效果

在这里插入图片描述

1 题目

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

Note that n! = n * (n - 1) * (n - 2) * … * 3 * 2 * 1.

Example 1:

Input: n = 3
Output: 0
Explanation: 3! = 6, no trailing zero.
Example 2:

Input: n = 5
Output: 1
Explanation: 5! = 120, one trailing zero.
Example 3:

Input: n = 0
Output: 0

Constraints:

0 <= n <= 104

2 思路

因为想要阶乘结果得到末尾带0的,就要乘以10,而10又是由2和5相乘。因此我们只用考虑阶乘因子中2和5的个数就可以。

而每个偶数都是2的倍数,因子都有含有2。在阶乘乘积中,2的个数远远大于5的个数,因此就只用考虑5的个数,计算出5的个数,就得到了0的个数(和5的个数相等)。

计算5的个数:通过找规律可以知道,阶乘中含有因子5的数等于循环计算这个数除以5的商(当商不为0时)的和。

找规律的方法:例如25!中,含有5,10,15,20,25这5个含有因子5的数,但是25含有两个5,所以计算结果为25/5 + 25/5/5 = 6。以此类推,可以得到125!,含有5的数为125/5 + 125/5/5 + 125/5/5/5 = 31.110含有5的数为110/5 + 110/5/5 = 26

3 代码

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


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进