求n!末尾0的个数

转载 2007年10月02日 14:42:00

思考: 该题实际上是求(2 5)因子对的个数。对于任意一个阶乘,5因子的个数总是小于2因子的个数,仅需考虑n!中5因子的个数

方法:  
 (1) 将该数用 5 除, 得到的商取整数。  
 (2) 然后再用所得商当被除数除以 5,得到的商取整数。  
 (3) 持续做到商等于 0 为止。  
 (4) 过程中的商加总即为阶乘的尾数 0 的个数。  
 
 例: 1234! 的尾数 0 的个数计算如下: 代码:
   1234/5  = 246
   246/5  = 49
   49/5  = 9
   9/5  = 1
   1/5  = 0  
 ------ ---------- 305

原理:
 行(1)得到的是1~~~n中因子含5的数的个数
 行(2)得到的是1~~~n中因子含25的数的个数
   .
   .
 行(n)得到的是1~~~n中因子含5^n的数的个数

 将这些数进行累计就得到了5因子的个数,也就是末尾0的个数。

Attachment :my code

#include <stdio.h>

int main()
{
 int i, n;

 scanf("%d", &n);
 for(i=0; i<n; i++)
 {
  int temp;
  int cnt = 0;
  
  scanf("%d", &temp);
  while(temp != 0)
   cnt += (temp = temp/5);
  
  printf("%d/n", cnt);
 }
}


 

求N!末尾的0的个数(找规律+递归)

0\'s Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 计算整数n!(n的阶乘)末尾有多少个0。 输入 第一行输入一...
  • qq_16255321
  • qq_16255321
  • 2014年07月20日 16:49
  • 1606

求 N!末尾0的个数

http://acm.hust.edu.cn/vjudge/contest/view.action?cid=43142#problem/C Description The mo...
  • u013573047
  • u013573047
  • 2014年03月29日 14:57
  • 887

求N!末尾0的个数

此题n的取值可能很大,甚至会达到亿,这里我们区最大范围2000000000(2*10^9)。 分析一: 乘积末尾的0的个数依赖于因子中的2的个数和5的个数。对于阶乘来说,每2个数字就至...
  • HK_JH
  • HK_JH
  • 2013年04月13日 21:43
  • 697

求N!末尾0的个数

题目:给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3 628 800,N!的末尾有两个0。 方法一: 最容易想到的方法,先把N的阶乘求出来,再用一个函数计算末尾...
  • element137
  • element137
  • 2017年07月23日 13:54
  • 62

c语言大数阶乘和计算阶乘末尾的0的个数

一、大数阶乘的数据保存 大数进行阶乘,将数据保存在数组中。这样遍历数组,就可以打印出阶乘的结果。 核心计算就是:将阶乘的乘法转化为加法和进位 比如:计算6!= 2*3*4*5*6  设为...
  • u012730315
  • u012730315
  • 2015年06月06日 00:20
  • 910

求阶乘N!末尾0的个数

POJ上有这个题目。http://poj.org/problem?id=1401。去掉一大堆没有用的信息,POJ的描述如下: For example, they defined the func...
  • u010781856
  • u010781856
  • 2015年04月14日 10:44
  • 353

C语言 程序 阶乘尾数零的个数

7.阶乘尾数零的个数 100!的尾数有多少个零?    *问题分析与算法设计   可以设想:先求出100!的值,然后数一下末尾有多少个零。事实上,与上题一样,由于计算机所能表示的整数范围有限,...
  • Insanity666
  • Insanity666
  • 2016年07月14日 20:52
  • 960

求一个数阶乘末尾有几个零

昨天校赛有一道题,是求一个数的阶乘,末尾有几个零。当时是没有做出来的。今天网上看了下,明白了原理。其实很多人都写过了,自己之所以再写,一是为了加强自己的理解,二是有的地方或许可以写得更详细,也写出自己...
  • lchSAIL
  • lchSAIL
  • 2016年11月07日 23:26
  • 312

面试题-华为(16年)-约瑟夫环:每隔两个数删掉一个数...-4

这是华为16年的面试题,网上有很多关于此题目的解析,在此我选择了最好理解记忆的一种,分享在此给大家。等会看题目你会发现这道题目其实是约瑟夫环的一个应用,使用数据结构中的链表。由于本人能力有限,中间遇到...
  • Namer_Mega
  • Namer_Mega
  • 2017年02月09日 16:33
  • 1549

C++练习之求N!末尾零的个数

需求就是求N!末尾零的个数, 因为没有确定N为多少, 但当N大于12时  int 型 已经存不下了, 所以不能求出来N的阶乘再看有多少个0, 所以最后决定根据 5的个数来确定末尾0的个数, ...
  • lx417147512
  • lx417147512
  • 2013年05月06日 22:23
  • 1051
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:求n!末尾0的个数
举报原因:
原因补充:

(最多只允许输入30个字)