题解 | #末尾0的个数#

末尾0的个数

https://www.nowcoder.com/practice/6ffdd7e4197c403e88c6a8aa3e7a332a

#include <iostream>
using namespace std;
int countZeors(int n)
{
    int cnt=0;// 用于存储末尾零的个数
    int i=5;// 因为每个5都会贡献一个0,所以从5开始计算
   // 循环直到 n 除以 i 小于 1
    while(n/i >=1)
    {
	  // 将 n 除以 i 的结果累加到 cnt
        cnt+=n/i;
	  // 递增 i,继续计算下一个5的倍数的贡献
        i*=5;
    }
    return cnt;
}
int main() {
    int a;
    while (cin >> a) { // 注意 while 处理多个 case
        int result = countZeors(a);
        std::cout << result << std::endl;
    }
}
// 64 位输出请用 printf("%lld")
  1. 初始化 cnt为 0,i 为 5,因为每个5都会贡献一个0。
  2. 使用 while 循环,直到 n 除以 i 小于 1,意味着已经计算完 n! 中所有能贡献0的5的倍数。
  3. 在循环中,将 n 除以 i 的结果累加到 cnt中,因为每个 i 都会贡献一个0。
  4. 将 i 乘以 5,以便计算下一个5的倍数的贡献。
  5. 循环结束后,返回计算得到的末尾零的个数。
#c++##末尾0的个数#
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 15:39
希望奇迹发生的布莱克...:真的是 现在卷实习就是没苦硬吃
点赞 评论 收藏
分享
07-07 10:44
青岛工学院 Java
机械打工仔:对方没做错任何事,你自己在这自找没趣呢,就算他工资不高,人家定多少薪资是人家的事,况且人家写了1~3年清清楚楚
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务