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;
}
}
分享到:
相关推荐
【问题描述】 数的阶乘定义为 N!=1 x 2 x 3 x ... N。对于任何给定的整数N,Z(N)指以十进制表示的N!的末尾零的个数。例如10!... x 100, 其中5的倍数为5, 10, …, 95, 100共20个,20个中有25的倍数
末尾0的数量:计算1024!中因数5的个数,与因数2的个数匹配得到0的个数。 22. 海盗分金币问题:使用动态规划,可以找出让最高级海盗获得最多金币的分配策略。 23. 组合最小整数:可以使用贪心策略,按升序遍历集合A...
- 如果读取的文件长度是奇数,则需要在末尾添加一个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) { ...
这里 `str` 是一个长度为6的字符数组,最后一个元素是结束符`\0`。 #### 字符指针表示法 ```c char *ptr = "hello"; ``` 这里 `ptr` 是指向字符串 `"hello"` 的字符指针。需要注意的是,`ptr` 指向的是一个常量字符...
如果文件大小大于块大小,它会定位到倒数第二个块的末尾;如果文件大小小于或等于块大小,它会直接从文件开头读取。这样,即使文件非常大,也能快速获取最后一行: ```python def get_last_line(inputfile): # ...
末尾有多少个0。 - **解决方案**:统计阶乘中因子5的个数即可。 **22. 海盗分金币问题** - **题目描述**:5个海盗如何分100枚金币。 - **解决方案**:使用逆向思维,从最后一个海盗开始考虑,逐步向前推导。 **23...
就是在文件末尾写入一个UUID码,写入UUID码,这样就确保了这个世界上不会存在MD5一样的文件,除非你 把我这个UUID码拿走去生成这个文件. 关键代码:此处我采用的是边读编写,节省内存,读写完之后,我在末尾将UUID转...
3. 计算阶乘末尾0的数量: - 1024!末尾的0数量可通过计算其中包含2和5的因子对数得到,因为10=2×5。 4. `split()`和`join()`方法: - `split()`用于将字符串分割成数组,可以指定分隔符。 - `join()`将数组元素...
(5) 组成的数有约数2,末尾必须是0或2,所以可能的组合有2350、2360、2530、2560、3250、3260、3520、3560、5230、5260、5320、5360。 【第三部分:3的倍数的特征】 1. 3的倍数特征:各数位数字之和是3的倍数的数...
末尾0的数量**:与因子5的数量有关,可以通过计算因子5的个数得到。 7. **海盗分金币问题**:涉及博弈论,需要分析每个海盗的最优策略。 8. **倒序字符串**:C语言中,可以使用指针操作直接在原字符串上进行翻转。 ...
### 计算机组成原理考试知识点汇总 ...以上是对计算机组成原理考试知识点的详细总结,涵盖了计算机的基本组成、工作原理、数据表示与存储、运算以及逻辑运算等内容,有助于学生理解和掌握计算机硬件的基础知识。
二进制数的每一位对应一个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个小...
这可以通过发送文件大小信息作为前导,或者在文件末尾添加特定的结束标识来实现。 在实际项目中,为了提高效率和健壮性,我们可能需要引入异步操作,使用`BeginSend`和`EndSend`、`BeginReceive`和`EndReceive`方法...
为了保证所每个项目组编写出的程序都符合相同的规范,便于提高代码的可读性和可维护性,便于检查、减少出错概率,有助于项目组成员间交流,保证一致性、统一性而建立的C#程序编码规范。 二、 范围 该规范适用于所有...
其实仅仅是在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的倍数。 ...
`Seek`方法的第一个参数表示偏移量,第二个参数表示起始位置(如文件开头、当前位置或文件末尾)。 #### 六、总结 以上介绍了如何使用Delphi中的`TMemoryStream`类来高效地读取TXT文件。这种方法不仅简单易用,...