题解 | #末尾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的个数#
全部评论

相关推荐

06-12 16:23
已编辑
小米_软件开发(准入职员工)
点赞 评论 收藏
分享
05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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