`
hwy1782
  • 浏览: 150211 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

求n!尾部有几个零

阅读更多

n! =  n * (n-1) * (n-2) *... 1;求得到的结果中零的个数

 

分析:如 10 ! = 1*2*3*4*5*6*7*8*9*10 = (2*5)*10*1*3*4*6*7*8*9

 

(2*5)*10 的结果中会有零,所以阶乘中零的个数,只需要计算其中这些组合的个数。注意到10 = 2*5,所以归根到底还

 

是要求计算这个序列中2*5组合的数目。 注意到任意一个偶数都可以拆分成2*n的形式,所以这里只有考虑能拆分得到5的数

 

的数目即可。

 

10 = 2*5

 

15 = 3*5

 

 25 = 5*5 (此时为特殊情况,能拆分成两个5,要细分)

 

 

java代码如下

/** 
 * @author hwy1782@gmail.com 
 * @creation date 2010-9-23 上午09:29:12 
 * 
 * 找出 n! 末尾零的个数
 * 
 * 
 */

public class FindZeroNumber {
	
	public static int findNumber(int n){
		int numberOfFive = findFiveCount(n);
		int result = 0;
		result += n /5;
		while(numberOfFive > 1){
			result += n/(Math.pow(5, numberOfFive));
			numberOfFive--;
		}
		return result;
	}
	
	// 若 5^m <=  n ,求最大m的值,m = log(n)/log(5)
	private static int findFiveCount(int n) {
		return (int)(Math.log(n)/Math.log(5));
	}
	
	public static void main(String[] args) {
		System.out.println(findNumber(1000));
	}
	
}
 
分享到:
评论

相关推荐

    Go语言使用字符串的几个技巧分享

    这真的非常重要,而且影响着下面的其他几个技巧。当你创建一个字符串时,其本质就是一个字节的数组。这意味着你可以像访问数组一样的访问单独的某个字节。例如,下面的代码逐个打印字符串中的每个字节以及对应字节...

    Visual Basic里与Print有关的函数

    Visual Basic里与Print有关的函数  在Visual Basic里信息要按一定的格式输出... 以上就是在实际运用中与Print有关的几个函数,灵活运用这些函数可以为我们带来很多方便,大家可以实际试验一下,相信会有所帮助的。

    蛇与梯子问题的贪心算法设计

    “蛇和梯子”是一个在N×N(0&lt;N)的方格棋盘上进行的游戏。(见下图) 方格从1到N的平方编号。除了第1号和最后编号的方格,其它的格子都有可能有蛇或梯子存在(蛇和梯子的数量及具体位置由输入确定,它们的数量都在...

    你必须知道的495个C语言问题

    2.14 为什么sizeof返回的值大于结构大小的期望值,是不是尾部有填充? 2.15 如何确定域在结构中的字节偏移量? 2.16 怎样在运行时用名字访问结构中的域? 2.17 C语言中有和Pascal的with等价的语句吗? 2.18...

    《你必须知道的495个C语言问题》

    2.14 为什么sizeof返回的值大于结构大小的期望值,是不是尾部有填充? 28 2.15 如何确定域在结构中的字节偏移量? 28 2.16 怎样在运行时用名字访问结构中的域? 29 2.17 C语言中有和Pascal的with等价的语句吗...

    正则表达式

    /[^"] * / //匹配零个或多个非引号字符. 正则表达式的复制字符 字符 含义 __________________________________________________________________ {n, m} 匹配前一项至少n次,但是不能超过m次 {n, } 匹配前一...

    一些C面试题,希望能对大家有帮助

    3.以下是求一个数的平方的程序,请找出错误: #define SQUARE(a)((a)*(a)) int a=5; int b; b=SQUARE(a++); 4.typedef unsigned char BYTE int examply_fun(BYTE gt_len; BYTE *gt_code) { BYTE *gt_buf; gt_buf=...

    C语言FAQ 常见问题列表

    o 3.11 为什么 sizeof 返回的值大于结构的期望值, 是不是尾部有填充? o 3.12 如何确定域在结构中的字节偏移? o 3.13 怎样在运行时用名字访问结构中的域? o 3.14 程序运行正确, 但退出时却 ``core dump''了,...

    流光4.71 for.zip

    3、流光其实不仅仅是一个在线安全检测工具——而是一个"工具包",同时具有以下几个辅助功能 A、探测主机端口 B、探测主机类型 C、FINGER D、扫描POP3、FTP主机 E、验证主机用户 而其主要功能是对POP3、...

    你必须知道的495个C语言问题(PDF)

    例如定义一个包含N 个指向返 回指向字符的指针的函数的指针的数组? . . . . . . . . . . . . . . 3 1.8 函数只定义了一次, 调用了一次, 但编译器提示非法重定义了。. . 4 1.9 main() 的正确定义是什么? void main...

    MYSQL常用命令大全

    MySql的用户管理是通过 User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下: grant all on mydb...

    MySQL命令大全

    MySql的用户管理是通过User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下: grant all on mydb...

    华为编程开发规范与案例

    近日在CDB并行测试中发现一个问题:我们需要的小区负荷话统结果总是为零,开始还以为小区负荷太小,于是加大短消息下发数量,但还为零,于是在程序中加入测试代码,把收到的数据在BAM上打印出来, 结果打印出来的...

    leetcode和oj-leetcode-oj:力码在线裁判

    列举几个例子(例如nRows = 3,4 ),正反索引递增的规定 为每一行构建子字符串。 注意nRows=1时的边缘情况 ###7。 反转整数 :OK_hand: 为避免溢出,乘法后应进行双重检查 边缘情况: x = Integer.MIN

    powerbuilder

    由于PowerBuilder使用数值0(即ASCII码为0的字符)结束每个字符串,因此,如果打印控制序列中包含了数值0,应用程序需要使用其它字符在参数string中替代数值0,并用zerochar参数指明这个替代字符。一般来说,应该...

    javascript入门笔记

    特点 :将 a 和 b 转换为 二进制,按位比较,对应位置的数字,至少有一位为1的话,那么该为的整体结果就为1,否则为 0 ex : 5 | 3 101 011 ======== 111 结果为 :7 适用场合:任何小数与0 做 按位或的操作...

    700个批处理打包下载.rar

    把一个数拆分为几个数的和.cmd 把指定文件中的指定位置的数字相加.cmd 把秒转换为天小时分秒的格式.cmd 把首行和尾行互换.cmd 抛弃路径尾部指定层次的字符串.cmd 拼接相临的奇偶行文本内容.cmd 指定图片路径换桌面....

    《计算机操作系统》期末复习指导

    一般来说同步反映了进程之间的协作性质,往往指有几个进程共同完成一个任务时在时间次序上的某种限制,进程相互之间各自的存在及作用,通过交换信息完成通信。如接力比赛中一组队员使用接力棒等。 进程互斥...

Global site tag (gtag.js) - Google Analytics