2012年小米在川大的校园招聘笔试题

1、1024!末尾有_______个0。

答案来源:http://bylijinnan.iteye.com/blog/1462202

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;
	}
}

2、 假设在一段高速公路上,30分钟之内见到汽车经过的概率是。那么,在10分钟内见到汽车经过的概率是多少?(假设缺省概率固定)
答案:这题的关键在于0.95是见到一辆或多辆汽车的概率,而不是仅见到一辆汽车的概率。在30分钟内,见不到任何车辆的概率为0.05。因此在10分钟内见不到任何车辆的概率是这个值的立方根,而在10分钟内见到一辆车的概率则为1减去此立方根,也就是大约63%。


3、具体题目记不清了,只记得个大概:题目先给出了三叉树的前序、中序A、中序B、后序遍历的顺序,然后已知一棵三叉树的前序、中序A、中序B的遍历序列,让你写出该三叉树的后序遍历序列:______________________


4、题目大致是这样的:

char ch1[] = "abc";

char ch2[] = "abc";

const char* ch3[] = "abc";

const char* ch4[] = "abc;

const char ch5[] = "abc";

const char ch6[] = "abc";

然后填空,(ch1 == ch2) ==____,(ch3 == ch4) == _____,(ch5 == ch6) == ______.(具体的题目记得不清楚了,可能有一点区别)


5、A-F都为1-9的数字,并且ABCDEF、CDEFAB、EFABCD都为六位数,并满足如下的关系:

ABCDEF*2= CDEFAB,CDEFAB*2= EFABCD
求出A、B、C、D、E、F这六个数分别是多少?

最后三题都为简答题(1,2题各为20分,第三题为30分)
6、如果入栈顺序任意,如何判断某个出栈序列是否合法?(答案来源: http://blog.csdn.net/qitian0008/article/details/7864864
package qyq.Algorithm.StackPop;

import java.util.Stack;

/**
 * 判断出栈的顺序是否合法
 * @author qi
 * @creation 2012-8-14
 */
public class StackPopOrder {

	public static void main(String[] args) {
		String s="1234";
		String t="4312";
		boolean flag=popOrder(s, t);
		if(flag){
			System.err.println("yes");
		}else {
			System.err.println("no");
		}
	}
	
	public static boolean popOrder(String s,String t){
		Stack<Character> stack =new Stack<Character>();
		int lenS=s.length();
		int lenT=t.length();
		int i=0,j=0;
		while(i<lenS){
			if(s.charAt(i)==t.charAt(j)){
				i++;
				j++;
			}else if(!stack.isEmpty()&&t.charAt(j)==stack.peek()){
				j++;
				stack.pop();
			}else{
				stack.push(s.charAt(i));
				i++;
			}
		}
		while(j<lenT){
			char temp=t.charAt(j);
			char peek=stack.peek();
			if(temp==peek){
				j++;
				stack.pop();
			}else {
				break;
			}
		}
		if(stack.isEmpty()){
			return true;
		}
		return false;
	}

}

7、题目大致的意思是这样的
已知序列(A, B, C,...,Z, AA, AB,...,AZ,BA,BB...BZ,...ZA,...,ZZ,AAA,AAB,...,...AAZ,...,ZZZ,....),输入一个数n,返回这个数所对应的字符串,为简单题,可以不用写代码,关键是思路。


8、类似于(不记得条件是否记全了):
有下面这样一些原子操作:
(1)赋值(a = 1; b = a)
(2)+1(a++)
(3)循环,只能进行固定次数的循环(for(a)b++; 即进行a次b++操作)
(4)操作数只能为0和整数
(5)不用考虑溢出
写出加减乘除的伪代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值