您的位置:首页 > 编程语言

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

2012-09-18 15:27 609 查看
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)不用考虑溢出
写出加减乘除的伪代码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  招聘 string class 编程 c