`

1024! 末尾有多少个0?

 
阅读更多

public class CountZerosInFactorial {

	/**
	 * 题目:1024! 末尾有多少个0?
	 * 参看《编程之美》
	 * 解答:
	 	末尾0的个数取决于乘法中因子2和5的个数。显然乘法中因子2的个数大于5的个数,所以我们只需统计因子5的个数。
		是5的倍数的数有: 1024 / 5 = 204个
		是25的倍数的数有:1024 / 25 = 40个
		是125的倍数的数有:1024 / 125 = 8个
		是625的倍数的数有:1024 / 625 = 1个
		所以1024! 中总共有204+40+8+1=253个因子5。
		也就是说1024! 末尾有253个0
	 */
	public static void main(String[] args) {
		int tmp=countZerosInFactorial(1024);
		System.out.println(tmp);
	}

	public static int countZerosInFactorial(int n){
		if(n<5){
			return -1;
		}
		int count=0;
		while(n>0){
			count+=n/5;
			n/=5;
		}
		return count;
	}
}


0
0
分享到:
评论

相关推荐

    C语言编程训练:循环结构-求阶乘末尾零个数

    【问题描述】 数的阶乘定义为 N!=1 x 2 x 3 x ... N。对于任何给定的整数N,Z(N)指以十进制表示的N!的末尾零的个数。例如10!... x 100, 其中5的倍数为5, 10, …, 95, 100共20个,20个中有25的倍数

    微软面试15题

    末尾0的数量:计算1024!中因数5的个数,与因数2的个数匹配得到0的个数。 22. 海盗分金币问题:使用动态规划,可以找出让最高级海盗获得最多金币的分配策略。 23. 组合最小整数:可以使用贪心策略,按升序遍历集合A...

    java实现计算一个文件的16位效验和

    - 如果读取的文件长度是奇数,则需要在末尾添加一个0,使得数组长度为偶数,便于后续处理。 3. **组合成16位数值**: - 将每两个相邻的字节组合成一个16位数值存储在数组`b[]`中。 4. **计算总和**: - 对数组`...

    统计一片英文文章里面字符的多少和出现的频率

    假设我们使用二维数组`charCount[256]`,因为ASCII码表有256个字符,这样可以涵盖所有可能的ASCII字符: ```c int charCount[256] = {0}; // 初始化为0 // 遍历一行字符 for (int i = 0; line[i] != '\0'; ++i) { ...

    使用指针、数组处理在C语言中处理“字符串”

    这里 `str` 是一个长度为6的字符数组,最后一个元素是结束符`\0`。 #### 字符指针表示法 ```c char *ptr = "hello"; ``` 这里 `ptr` 是指向字符串 `"hello"` 的字符指针。需要注意的是,`ptr` 指向的是一个常量字符...

    Python实现读取文件最后n行的方法

    如果文件大小大于块大小,它会定位到倒数第二个块的末尾;如果文件大小小于或等于块大小,它会直接从文件开头读取。这样,即使文件非常大,也能快速获取最后一行: ```python def get_last_line(inputfile): # ...

    微软、谷歌、百度等公司经典面试100题[第101-170题].pdf

    末尾有多少个0。 - **解决方案**:统计阶乘中因子5的个数即可。 **22. 海盗分金币问题** - **题目描述**:5个海盗如何分100枚金币。 - **解决方案**:使用逆向思维,从最后一个海盗开始考虑,逐步向前推导。 **23...

    文件MD5批量修改工具.zip

    就是在文件末尾写入一个UUID码,写入UUID码,这样就确保了这个世界上不会存在MD5一样的文件,除非你 把我这个UUID码拿走去生成这个文件. 关键代码:此处我采用的是边读编写,节省内存,读写完之后,我在末尾将UUID转...

    前端程序员面试分类模拟题--附答案详解

    3. 计算阶乘末尾0的数量: - 1024!末尾的0数量可通过计算其中包含2和5的因子对数得到,因为10=2×5。 4. `split()`和`join()`方法: - `split()`用于将字符串分割成数组,可以指定分隔符。 - `join()`将数组元素...

    北师大版五年级上册数学知识点复习总结资料(1).docx

    (5) 组成的数有约数2,末尾必须是0或2,所以可能的组合有2350、2360、2530、2560、3250、3260、3520、3560、5230、5260、5320、5360。 【第三部分:3的倍数的特征】 1. 3的倍数特征:各数位数字之和是3的倍数的数...

    Java 微软面试题

    末尾0的数量**:与因子5的数量有关,可以通过计算因子5的个数得到。 7. **海盗分金币问题**:涉及博弈论,需要分析每个海盗的最优策略。 8. **倒序字符串**:C语言中,可以使用指针操作直接在原字符串上进行翻转。 ...

    计算机组成原理考试,自检

    ### 计算机组成原理考试知识点汇总 ...以上是对计算机组成原理考试知识点的详细总结,涵盖了计算机的基本组成、工作原理、数据表示与存储、运算以及逻辑运算等内容,有助于学生理解和掌握计算机硬件的基础知识。

    CSP2020入门组初赛试题解析(单项选择题)-PPT

    二进制数的每一位对应一个2的幂,从右到左分别是2^0、2^1、2^2和2^3,所以(1011)2=1*2^3+0*2^2+1*2^1+1*2^0=11。 10. 双胞胎必须相邻的排列问题可使用捆绑法解决。5个小朋友中有2个双胞胎,视为1个整体与其他3个小...

    c#使用一个socket同时发送字符串和文件

    这可以通过发送文件大小信息作为前导,或者在文件末尾添加特定的结束标识来实现。 在实际项目中,为了提高效率和健壮性,我们可能需要引入异步操作,使用`BeginSend`和`EndSend`、`BeginReceive`和`EndReceive`方法...

    最全面的C#程序编码规范

    为了保证所每个项目组编写出的程序都符合相同的规范,便于提高代码的可读性和可维护性,便于检查、减少出错概率,有助于项目组成员间交流,保证一致性、统一性而建立的C#程序编码规范。 二、 范围 该规范适用于所有...

    linux图形系统开发基础,转帖自linux时代

    其实仅仅是在kernel /vmlinuz-2.6.26这一行末尾处加了一个vga=0x314,将Framebuffer设置为800x600x16的显示模式,其中800x600是屏幕分辨率,16表示显示的是16bit的彩色。下面详细的说一下关于vesa vga参数的含义: ...

    五年级数学上册专项复习专项部分数与代数北师大版

    13. **五位数的构造**:一个五位数,最高位是最小的奇数1,百位上是最小的合数4,个位是最小的质数2,其他位上是0,这个数是10402。 14. **调整数的性质**:1024至少减去2就是3的倍数,1708至少加上2就是5的倍数。 ...

    Delphi_用流来读取TXT文件

    `Seek`方法的第一个参数表示偏移量,第二个参数表示起始位置(如文件开头、当前位置或文件末尾)。 #### 六、总结 以上介绍了如何使用Delphi中的`TMemoryStream`类来高效地读取TXT文件。这种方法不仅简单易用,...

Global site tag (gtag.js) - Google Analytics