Moderate 阶层的结尾0个数 @CareerCup

原创 2013年12月02日 07:30:12

思路和《经典面试题:100的阶乘有几个结尾零》是一样的,但代码更简洁了,尤其是第二种方法!


package Moderate;

/**
 * Write an algorithm which computes the number of trailing zeros in n
 * factorial.
 * 
 * 译文:
 * 
 * 写一个算法计算n的阶乘末尾0的个数。
 * 
 */
public class S17_3 {
	
	public static int factorsOf5(int i) {
		int count = 0;
		while (i % 5 == 0) {
			count++;
			i /= 5;
		}
		return count;
	}

	// 第一种方法就是对阶层的所有因子都计算有几个5因子
	public static int countFactZeros(int num) {
		int count = 0;
		for (int i = 2; i <= num; i++) {
			count += factorsOf5(i);
		}
		return count;
	}
	
	// 第二种方法,更快地计算出总数
	public static int countFactZeros2(int num) {
        int count = 0;
        if (num < 0) {
                System.out.println("Factorial is not defined for negative numbers");
                return 0;
        }
        while(num > 0){
        	count += num / 5;
        	num /= 5;
        }
        return count;
	}

	public static int factorial(int num) {
		if (num == 1) {
			return 1;
		} else if (num > 1) {
			return num * factorial(num - 1);
		} else {
			return -1; // Error
		}
	}

	public static void main(String[] args) {
		for (int i = 1; i < 12; i++) {
			System.out.println(i + "! (or " + factorial(i) + ") has " + countFactZeros(i) + " zeros");
			System.out.println(i + "! (or " + factorial(i) + ") has " + countFactZeros2(i) + " zeros");
		}
	}
}


Moderate 找最小排序区间 @CareerCup

例子:数组 1, 2, 4, 7, 10, 11, 7, 12, 6, 7, 16, 18, 19  只要对下标3到9之间的元素排序,就能使整个数组有序 思路是: // Left: 1, 2, 4...
  • hellobinfeng
  • hellobinfeng
  • 2013年12月03日 01:55
  • 1173

Moderate 判断井字游戏的胜利 @CareerCup

基于要查找的次数来决定是否要预处理。预处理方式按照3进制来做。 另外,检查是否赢了要判断横行,纵列,正反对角线 package Moderate; /** * Design a...
  • hellobinfeng
  • hellobinfeng
  • 2013年12月02日 07:12
  • 1851

滴滴2017校园招聘编程题——阶乘末尾0的个数

滴滴出行2017校园招聘编程题:1000以内某个数的阶乘结果,求其中末尾0的个数。...
  • FX677588
  • FX677588
  • 2016年09月19日 12:19
  • 1293

Moderate 加入空格使得可辨别单词数量最多 @CareerCup

递归题目,注意结合了memo的方法和trie的应用 package Moderate; import java.util.Hashtable; import CtCILibrary.As...
  • hellobinfeng
  • hellobinfeng
  • 2013年12月13日 01:24
  • 1904

Moderate 不用比较符返回较大的数 @CareerCup

通过判断a-b的最高位来知道哪一个数比较大 但是要注意overflow的情况 if a and b have different signs: // if a > 0, then b < ...
  • hellobinfeng
  • hellobinfeng
  • 2013年12月02日 07:57
  • 1358

c语言大数阶乘和计算阶乘末尾的0的个数

一、大数阶乘的数据保存 大数进行阶乘,将数据保存在数组中。这样遍历数组,就可以打印出阶乘的结果。 核心计算就是:将阶乘的乘法转化为加法和进位 比如:计算6!= 2*3*4*5*6  设为...
  • u012730315
  • u012730315
  • 2015年06月06日 00:20
  • 908

中国社会九大阶层划分

中国社会的人群划分为9个阶层,1—3级是统治阶层,是最大的既得利益者;4-6级属于中产阶级;7-9级是中国社会的底层,9级是这个社会最悲惨的阶层。1级:以在任委员、退休常委为代表,和2的区别在于,1对...
  • likika2012
  • likika2012
  • 2015年10月19日 20:47
  • 11265

Hard 计算0到n之间2的个数 @CareerCup

一种是Brute force,O(nlogn) 另一种是找规律O(n),见http://hawstein.com/posts/20.4.html 当某一位的数字小于2时,那么该位出现2的次数为...
  • hellobinfeng
  • hellobinfeng
  • 2013年12月13日 03:33
  • 1329

U9Bom阶层展开脚本

网上找了很久关于U9BOM展开的脚本没找到,所自己参考网上自己写了一个U9的BOM展开脚本...
  • hch271510994
  • hch271510994
  • 2016年12月29日 13:23
  • 344

阶层上升的渠道

说元王朝似乎不能不说说科举制度,因为自从科举面市以来,元王朝的科举就是最奇特的,流行点说就是最奇葩的。科举是个什么样的制度?简单说来就是一个以考试为形式的文官选拔制度,这个制度好不好?如果研究的唐以前...
  • zhangbinsijifeng
  • zhangbinsijifeng
  • 2015年11月20日 12:44
  • 337
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Moderate 阶层的结尾0个数 @CareerCup
举报原因:
原因补充:

(最多只允许输入30个字)