如果我们要判断出0的个数,如果我们直接求N!那么数据会很大,数据可能溢出

那么为了得到0的个数我们知道可以从10的角度进行判断,如果我们知道N!中10的个数

我们就可以判断出0的个数,

如果N!=K*10^n,K是不能被10整除的数,那么我们可以根据n就可以得到0的个数,

考虑10的个数,我们必须对N!进行质因数的分解,N!=(2^x)*(3^y)(5^z)...........,由于2*5=10,

所以n只与x和z相关,

于是n=min(x,z),我们可以判断出x的个数必然大于z的个数,因为被2整除的数的频率大于被5整除的数的频率高,

所以n=z;

下面我们要判断出N1中5的个数,

因为N!=N*N-1*N-2*N-3.......................................

所以我们要判断出5的个数,我们可以对每个N,N-1,N-2,进行判断,就可以得到5的个数了

判断5的个数代码:

<span style="font-size:18px;">#include<iostream>
using namespace std;int main()
{int a = 100;int num = 0;for (int i = 1; i <= a; i++){int j = i;while (j % 5 == 0){num++;j = j / 5;}}cout << num << endl;system("pause");return 0;
}</span>

我们还可以用另一种方法进行5的个数进行求解:

z=N/5+N/25+N/5^3+....................

知道N/5^k为0;

代码:

<span style="font-size:18px;">#include<iostream>
using namespace std;int main()
{int a = 100;int num = 0;while (a){num += a / 5;a = a / 5;}cout << num << endl;system("pause");return 0;
}</span>

判断N!阶乘中末尾0的个数相关推荐

  1. java n%9==0_用C++实现求N!中末尾0的个数的方法详解

    题目描述: 输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n = 10; n! = 3628800,所以答案为2 输入描述: 输入为1行,n(1≤n≤1000) 输出描述: 输出一个整数 ...

  2. 对一个正整数n,求出n!中末尾0的个数。

    对一个正整数n,求出n!中末尾0的个数. 输入 输入有若干行.每一行上有一个整数T,是测试数据组数,接着有T行,每一行包含一个确定的正整数n(n≤1000000000). 输出 对输入行中的每一个数据 ...

  3. 计算 n! 中末尾0的个数 求n!中p的重数

    题意: 输入正整数n,计算 n! 中末尾0的个数 输入:输入一个正整数n (1≤n≤1 000 000 000) 输出:输出 n! 末尾0的个数 样例输入:3 100 1024 样例输出:0 24 2 ...

  4. 求阶乘N!末尾0的个数

    POJ上有这个题目.http://poj.org/problem?id=1401.去掉一大堆没有用的信息,POJ的描述如下: For example, they defined the functio ...

  5. 【算法】计算n阶乘中尾部0的个数

    题目 设计一个算法,计算出n阶乘中尾部零的个数样例 11! = 39916800,因此应该返回 2挑战 O(logN)的时间复杂度 题目分析 n阶乘中,尾部出现的零是10和10的倍数相乘的结果,尾部出 ...

  6. 阶乘末尾0的个数(java)

    从输入中读取一个数n,求出n!中末尾0的个数. 输入格式: 输入有若干行.第一行上有一个整数m,指明接下来的数字的个数.然后是m行,每一行包含一个确定的正整数n,1<=n<=1000000 ...

  7. c语言 n阶阶乘尾0个数,计算n的阶乘(n!)末尾0的个数

    题目: 给定一个正整数n,请计算n的阶乘n!末尾所含有"0"的个数. 举例: 5!=120,其末尾所含有的"0"的个数为1: 10!= 3628800,其末尾所 ...

  8. 求表达式 f(n)结果末尾0的个数

    输入一个自然数n,求表达式 f(n) = 1!*2!*3!*.....*n! 的结果末尾有几个连续的0? 输入描述: 自然数n 输出描述: f(n)末尾连续的0的个数 输入例子1: 11 输出例子1: ...

  9. C++版本计算n阶乘末尾0的个数原理讲解及代码实现

    C++版本计算n阶乘末尾0的个数原理讲解及代码实现 /*! * Copyright (c) 2020,ZYF. * All Rights Reserved. * * \file Factorial.c ...

最新文章

  1. ArrayList与LinkedList区别
  2. 线程池ThreadPoolExecutor
  3. /boor删除恢复,
  4. python读取内存和空闲内存
  5. 研究人员利用非线性原理为机器人创造出类似昆虫的步态,脑机接口也可以使用...
  6. 【转】Yahoo!团队:网站性能优化的35条黄金守则
  7. 轻松学MVC4.0–2 创建用户列表页面
  8. IntelliJ IDEA下的使用git
  9. 【实践驱动开发3-003】TI WL1835MODCOM8 在android的移植 - 软件获取2
  10. 列表解析python_基于Python列表解析(列表推导式)
  11. 三地警察抓兔子[转]
  12. ActionItemBadge:在actionbar上显示badge数字提示
  13. IE下jquery的fadeIn与fadeOut方法失效的BUG
  14. PROTEL技术大全
  15. 2021北京交通大学《深度学习》平台课—第1讲:绪论
  16. python转html_Python 将文本转换成html的简单示例
  17. 股票市场行情走势图绘制
  18. 疫情下的生鲜配送,数字供应链发挥了重大作用
  19. R_Studio(学生成绩)对数据缺失值md.pattern()、异常值分析(箱线图)
  20. Springboot2整合kafka的两种使用方式

热门文章

  1. linux 查看文件中数据类型,Linux下使用file命令确定文件中数据的类型-文件类型...
  2. Java并发编程实战系列15之原子遍历与非阻塞同步机制(Atomic Variables and Non-blocking Synchronization)...
  3. 使用Spring Data Redis操作Redis(集群版)
  4. Linux基础配置和查看命令帮助
  5. js的apply方法使用详解,绝对NB
  6. hdu 1528+hdu 1962(最小覆盖)
  7. studentname在java中怎么_是教师,还是学生?setName法和string赋值法区别在哪里!!!...
  8. keil3如何放大字体_keil3如何设置字体 keil字体放大快捷键
  9. Latex注释快捷键
  10. 【正一专栏】欧冠小组赛第四轮综述——有钱就能风清扬