题目:给定一个整数N,那么N的阶乘N!末尾有多少个零呢?
末尾有几个零?如果我们从哪些数相乘可以的出10,这个角度来解决这个问题,这就会变成简单。对质因数进行分解由于10=2*5,即每一对2和5就可以产生一个10,如果我们求出N!中,2和5的分别的次方数,假设为X,Z,取决于两个数中最小的那个数,于是有公式,M=min(X,Z),M为零的个数,由于在阶乘中,2出现的概率比5的高,所以公式M=Z所以
解法一:算法比较简单,就是直接计算阶乘的里面的每一个元素包含5的个数
public static int countZeroNum1(int N){
int num = 0;
for (int i = 1; i <= N; i++) {
int j = i;
while(j%5==0) {
num++;
j/=5;
}
}
return num;
}

解法二:公式 Z=[N/5] + [N/5^2]+ ...该公式的[N/5]含义是在不大于N的阶乘中包含一个5的个数,就比如40里面,包含一个5的个数为5,10,15,20,..40   即 40/5=8个(里面有8个元素包含一个5),那当我们遇到类似于元素为25时,里面有5*5时,即里面有两个5,所以就用[N/5^2]算出包含两个5时的个数,类似这样的运算,当5^k>N时,停止
public static int countZeroNum2(int N) {
int num = 0;
while(N > 0) {
num += (N/5);
N /= 5;
}
return num;
}
本文的内容来自编程之美和个人对题目的一些理解

转载于:https://www.cnblogs.com/shangwne/p/3617532.html

给定一个整数N,那么N的阶乘N!末尾有多少个零呢?相关推荐

  1. N的阶乘末尾有几个零C语言,N的阶乘末尾有多少个零?

    在创联ifLab的招新问答卷上看到这么一题,大意是: 给出一个整数N,求N!(N的阶乘)的末尾有多少个零? 由于在N特别大的时候强行算出N!是不可能的,所以肯定要另找方法解决了. 首先,为什么末尾会有 ...

  2. n!阶乘末尾有多少个零0

    题目: 初阶:1*2*3*--*100 求结果末尾有多少个零. 进阶: N的阶乘末尾有多少个0 分析: 一般类似的题目都会蕴含某种规律或简便方法的阶乘末尾一个零表示一个进位,则相当于乘以10而10 是 ...

  3. 如何确定一个N!末尾有多少个零

    题目:1*2*3*--*100 求结果末尾有多少个零 分析:一般类似的题目都会蕴含某种规律或简便方法的,阶乘末尾一个零表示一个进位,则相当于乘以10而10 是由2*5所得,在1~100当中,可以产生1 ...

  4. Java面试题:给定一个整数,按10进制来看,计算里面包含多少个0

    代码如下: package com.moson.interview;/*** 给定一个整数,按10进制来看,计算里面包含多少个0* @author moxingjian* @version 1.0* ...

  5. 整型数组 判断 java,给定一个整数数组,判断其中是否有3个数和为N

    借助集合将复杂度降到n2,但耗时还是比较长. import java.util.HashMap; import java.util.HashSet; import java.util.Scanner; ...

  6. 给定一个整数判断是否为素数_Ruby程序检查给定数字是否为素数

    给定一个整数判断是否为素数 检查素数 (Checking prime number) Before getting into writing the code, let us understand w ...

  7. 给定一个整数数组,判断是否存在重复元素。

    存在重复元素 给定一个整数数组,判断是否存在重复元素. 如果存在一值在数组中出现至少两次,函数返回 true .如果数组中每个元素都不相同,则返回 false 示例 1: 输入: [1,2,3,1] ...

  8. 作业帮:给定一个整数数组,找出其中两个数相加等于目标值(去重set)

    题目描述 给定一个整数数组,找出其中两个数相加等于目标值输入 [1,3,5,7,9,11] 10输出 1,9 3,7 代码: import java.util.HashMap; import java ...

  9. 如何把一个整数转化成数组_「leetcode891」给定一个整数数组 A,考虑 A 的所有非空子序列...

    给定一个整数数组 A ,考虑 A 的所有非空子序列. 对于任意序列 S ,设 S 的宽度是 S 的最大元素和最小元素的差. 返回 A 的所有子序列的宽度之和. 由于答案可能非常大,请返回答案模 10^ ...

最新文章

  1. 苏州outlook的方向分析
  2. 成为大厂AI算法工程师,“NLP/CV”都是你必须过的坎!
  3. 前端学习(2286):react之无状态组件
  4. 一个热词推荐的简单实现
  5. C++实现11平台魔兽全图外挂
  6. html css js php常用网页代码汇总合集(一)网页设计入门代码知识汇总1
  7. 孙玄:分布式系统选主怎么玩
  8. 微信小程序分享功能的实现
  9. WebView加载网页不显示图片解决办法
  10. google计费接入,Billing结算库支付
  11. Vue2官网使用及简介
  12. android WebView
  13. 解决对路径bin\roslyn..的访问被拒绝
  14. Python学习笔记---merge和concat数据合并(1)
  15. English interview。。。
  16. Nmap入门:隐私刺探
  17. Linux 系统管理 : last 命令详解
  18. 【趣拿洞察】奈雪的茶成长背后的商业逻辑
  19. JS中三种常用的判断语句
  20. 15分钟掌握Elasticsearch 8大核心概念与基础用法

热门文章

  1. div 隐藏_CSS实现六边形Div图片展示效果
  2. 第二届高校大数据比赛之鼠标轨迹识别
  3. 机器学习入门02-朴素贝叶斯原理和java实现
  4. 图像处理之添加文字水印
  5. 记录第一次部署servlet实例
  6. Matplotlib画图常用方法总结(全)
  7. 使用URLConnection获取网页信息的基本流程
  8. Netflix: 从 Batch ETL 到 Stream Processing 的转型之路
  9. Slog45_项目上线之域名的购买
  10. [COGS2426][HZOI 2016]几何