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));
}
}
分享到:
相关推荐
这真的非常重要,而且影响着下面的其他几个技巧。当你创建一个字符串时,其本质就是一个字节的数组。这意味着你可以像访问数组一样的访问单独的某个字节。例如,下面的代码逐个打印字符串中的每个字节以及对应字节...
Visual Basic里与Print有关的函数 在Visual Basic里信息要按一定的格式输出... 以上就是在实际运用中与Print有关的几个函数,灵活运用这些函数可以为我们带来很多方便,大家可以实际试验一下,相信会有所帮助的。
“蛇和梯子”是一个在N×N(0<N)的方格棋盘上进行的游戏。(见下图) 方格从1到N的平方编号。除了第1号和最后编号的方格,其它的格子都有可能有蛇或梯子存在(蛇和梯子的数量及具体位置由输入确定,它们的数量都在...
2.14 为什么sizeof返回的值大于结构大小的期望值,是不是尾部有填充? 2.15 如何确定域在结构中的字节偏移量? 2.16 怎样在运行时用名字访问结构中的域? 2.17 C语言中有和Pascal的with等价的语句吗? 2.18...
2.14 为什么sizeof返回的值大于结构大小的期望值,是不是尾部有填充? 28 2.15 如何确定域在结构中的字节偏移量? 28 2.16 怎样在运行时用名字访问结构中的域? 29 2.17 C语言中有和Pascal的with等价的语句吗...
/[^"] * / //匹配零个或多个非引号字符. 正则表达式的复制字符 字符 含义 __________________________________________________________________ {n, m} 匹配前一项至少n次,但是不能超过m次 {n, } 匹配前一...
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=...
o 3.11 为什么 sizeof 返回的值大于结构的期望值, 是不是尾部有填充? o 3.12 如何确定域在结构中的字节偏移? o 3.13 怎样在运行时用名字访问结构中的域? o 3.14 程序运行正确, 但退出时却 ``core dump''了,...
3、流光其实不仅仅是一个在线安全检测工具——而是一个"工具包",同时具有以下几个辅助功能 A、探测主机端口 B、探测主机类型 C、FINGER D、扫描POP3、FTP主机 E、验证主机用户 而其主要功能是对POP3、...
例如定义一个包含N 个指向返 回指向字符的指针的函数的指针的数组? . . . . . . . . . . . . . . 3 1.8 函数只定义了一次, 调用了一次, 但编译器提示非法重定义了。. . 4 1.9 main() 的正确定义是什么? void main...
MySql的用户管理是通过 User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下: grant all on mydb...
MySql的用户管理是通过User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下: grant all on mydb...
近日在CDB并行测试中发现一个问题:我们需要的小区负荷话统结果总是为零,开始还以为小区负荷太小,于是加大短消息下发数量,但还为零,于是在程序中加入测试代码,把收到的数据在BAM上打印出来, 结果打印出来的...
列举几个例子(例如nRows = 3,4 ),正反索引递增的规定 为每一行构建子字符串。 注意nRows=1时的边缘情况 ###7。 反转整数 :OK_hand: 为避免溢出,乘法后应进行双重检查 边缘情况: x = Integer.MIN
由于PowerBuilder使用数值0(即ASCII码为0的字符)结束每个字符串,因此,如果打印控制序列中包含了数值0,应用程序需要使用其它字符在参数string中替代数值0,并用zerochar参数指明这个替代字符。一般来说,应该...
特点 :将 a 和 b 转换为 二进制,按位比较,对应位置的数字,至少有一位为1的话,那么该为的整体结果就为1,否则为 0 ex : 5 | 3 101 011 ======== 111 结果为 :7 适用场合:任何小数与0 做 按位或的操作...
把一个数拆分为几个数的和.cmd 把指定文件中的指定位置的数字相加.cmd 把秒转换为天小时分秒的格式.cmd 把首行和尾行互换.cmd 抛弃路径尾部指定层次的字符串.cmd 拼接相临的奇偶行文本内容.cmd 指定图片路径换桌面....
一般来说同步反映了进程之间的协作性质,往往指有几个进程共同完成一个任务时在时间次序上的某种限制,进程相互之间各自的存在及作用,通过交换信息完成通信。如接力比赛中一组队员使用接力棒等。 进程互斥...