package com.zhonghaiwangluokeji.interview;
/**
* 求N!的阶乘的结果的末尾有多少个连续的0
* @author yangjianzhou
* 实现原理:这个阶乘分解因式后有多少个5,例如25=5*5.
* 任何一个偶数与5的乘积的结果个位一定为0
*
*/
public class Problem2 {
public static void main(String[] args) {
System.out.println(countZeros(1000));
System.out.println(zeroCount(1000));
}
/**
* 网上例子
* @param n
* @return
*/
static int zeroCount ( int n) {
int counter = 0;
for( int i = 5,m; i <= n; i += 5) {
m = i;
while ( m % 5 == 0) {
counter++;
m /= 5;
}
}
return counter;
}
/**
* 自己实现
* @param n
* @return
*/
public static int countZeros(int n){
int start = 5;
int count = 0;
int temp;
while(start<=n){
temp = start;
while(temp%5==0){
temp = temp/5;
count ++;
}
start = start+5;
}
return count;
}
}
运算结果:
249
249
分享到:
相关推荐
标题中的“输入一个自然数n,求 ,同时统计结果中有多少个0。”是一个关于计算阶乘(Factorial)的问题,并且需要我们同时计算阶乘结果中0的数量。在这个问题中,"n!"代表n的阶乘,即1×2×3×...×n。 阶乘是数学...
- **描述**:斐波那契数列是一系列数字,其中每个数字是前两个数字的和,通常从1和1开始。 - **实现思路**: - 使用循环或递归方法来生成数列。 - 循环方法:初始化前两个数字为1,然后通过循环计算后续数字。 - ...
- 组合数是指从n个不同元素中选取r个元素的组合数,本节介绍了其计算方法。 - **最大1矩阵** - 介绍了如何求解最大1矩阵问题。 - **约瑟夫环问题(数学方法)** - 约瑟夫环问题是一种经典的数学问题,本节介绍...
最后一位非零数字的算法与程序分析》这篇文章主要探讨了如何在C语言环境下求解n阶乘(n!)最后一位非零数字的问题。该问题的关键在于有效地处理阶乘过程中产生的零,以避免它们占据计算资源并影响计算速度。 文章...
- 从链表末端删除第N个节点。 - **LinkedListCycle** - 检测链表中是否有环。 - **LinkedListCycleII** - 环的起点。 - **ReverseLinkedList** - 反转链表。 - **ReverseLinkedListII** - 反转链表的一部分。 -...
2. 计算 1 到 n 中素数的个数。方法 1 使用暴力枚举,从 2 到 x-1 验证每个数是否能整除 x,时间复杂度为 O(n^1.5)。方法 2 利用了平方根定理,只需检查到 sqrt(x) 即可,时间复杂度降低为 O(n^0.5)。实验中比较两种...
数列从0和1开始,后续每一项都是前两项之和。 - **实现方法**: - 使用循环或递归来计算数列中的值。 - 通过设置初始值0和1,然后不断累加得到新的数值。 #### 2. 素数判断 - **知识点**:素数是只能被1和它本身...
- 计算组合数C(N,R),即从N个不同元素中选取R个元素的组合数。 - **最大1矩阵** - 寻找一个矩阵中最大大小的全为1的子矩阵。 - **约瑟夫环问题(数学方法)** - 约瑟夫问题是一种经典的数学问题,涉及按特定规则...
可推导出从 n 个数字中选择 m 个数字的排列个数的公式:从推论可知,求 A(n,m)的排列个数可以通过乘法原理求解:计算排列的个数,先确定高位的可能个数,再逐一确认次高位可能个数,一直到最低位的可能个数……...
- **整数操作**:包括数字的反转、求解阶乘尾数的个数、寻找数组中重复的数字等。 - **二分搜索**:在有序数组中寻找元素的索引,以及寻找旋转数组中的元素。 - **矩阵搜索**:在二维矩阵中进行搜索。 - **快速幂...
这些算法涵盖了数值计算、序列求和、素数检测和阶乘等多个方面。以下是基于提供的部分内容的详细解释: 1. **交换变量**:交换两个变量a和b的值,通常有两种方法: - 方法一:中间变量法,即创建第三个变量c,将a...
- 一般形式:`T(n) = a * T(n/b) + f(n)`,其中`a`代表每个子问题的个数,`b`代表每个子问题相对于原问题规模的比例,`f(n)`代表分割和合并子问题所需的工作量。 - **特殊情况**: - 当`f(n) = O(n^c)`且`c (a)`时...
- 组合数C(N,R)表示从N个不同元素中取出R个元素的组合数。 14. **最大1矩阵** - 最大1矩阵问题是指在一个由0和1组成的矩阵中寻找最大的全1子矩阵。 15. **约瑟夫环问题** - 约瑟夫环问题是一个经典的组合问题...
14. **组合 C(m,n)**:组合是组合数学中的基本概念,表示从m个不同元素中不重复地选取n个元素的方法数。可以使用递推公式C(m, n) = C(m-1, n-1) + C(m-1, n)来计算,或者直接使用阶乘公式C(m, n) = m! / (n!(m-n)!)....
- **阶乘0的个数**: 统计\(n!\)尾部0的数量。 - **计算阶乘右边第一非0的数**: 需要计算\(n!\)的最后一位非零数字。 - **求\(n!\)的位数**: 利用斯特林公式近似计算。 - **判断数值\(m\)是否可以整除\(n!\)**: 通过...
5. 阶乘尾数零的个数:通过因式分解质数的方式确定一个数阶乘后末尾零的个数,常用于优化计算大数阶乘的复杂度。 6. 杨辉三角形:一个经典的数字排列图形,通过递归或者迭代算法生成,是组合数学中的一个重要概念。...
- **定义:** 如果一个正整数 \( n \) 能够被另一个正整数 \( d \) 整除(即 \( n \mod d = 0 \)),则称 \( d \) 是 \( n \) 的约数。 - **性质:** 对于任何正整数 \( n \),1 和 \( n \) 本身都是 \( n \) 的约数...
从 n 个不同元素中取出 m 个元素的所有组合的个数,叫做从 n 个不同元素中取出 m 个元素的组合数,用符号 C(n,m) 表示。 组合数公式:C(n,m) = n! / (m!(n-m)!),其中 n! 表示 n 的阶乘,即 n*(n-1)*(n-2)*...*2*1...