您的位置:首页 > 其它

滴滴的一些测试题

2016-09-18 19:21 253 查看
1、DNS是应用层协议

2、快排是不稳定排序

3、给定一个整数N,求N的阶乘末尾有多少个0?

注意到任意一个正整数的阶乘都可以表示为2^X*3^Y*5^Z*...,而要得到末尾的0,只有2*5可以得到。而且要在末尾加上一个0,只有用10的倍数乘以10的倍数才可以做到,因此N!末尾有min(X,Z)个0,显然min(X,Z) = Z.因此问题转换为求N!的质因数中有几个5.

int Question_1(int N)

{

int num = 0;

for(int i = 1; i<=N;++i)

{

int
j = i;

while(j%5==0)

{

++num;

j/=5;

}

}

return num;

}

4、乒乓球比赛的规则是五局三胜制。甲、乙两球员的胜率分别为60%和40%,再一次比赛中,若甲先胜了前2局,则甲最后获胜的概率是?

这是一道高中数学的求概率问题。

1。要知道甲的概率只要知道乙的概率,再用1减去乙的概率就可以了,所以:若乙想赢,则剩下三场必须全胜,概率为0.4*0.4*0.4=0.064 所以甲胜的概率为93.6%

2。第三场甲胜 0.6 打到第4场甲才胜可推出甲第3场输了0.4*0.6=0.24 打到第5场甲才胜就是0.4*0.4*0.6=0.096 所以0.6+0.24+0.096=0.936=93.6%

5、一个人上台阶,一次可上一个阶梯或两个,问这个人上十个阶梯有多少种走法?

走第一台阶只有1种方法,走第二台阶有2种方法,(一步或两步..)走第三台阶的时候就是分两步了:可以从第一台阶直接到第三台阶,也可以是从第二台阶到第三台阶,所以有1+2=3种方法;走第四台阶也是分两步:可以从第二台阶直接到第四台阶,也可以是从第三台阶到第四台阶,所以有3+2=5种方法;
.............以此类推,走1-9台阶需要的步数就是:1,2,3,5,8,13,21,34,55(斐波那契数列:每项等于前两项和)所以第10台阶需要的步数就是:34+55=89步......

6、int func(int x)
{

int countx = 0;

while(x)

{

countx++;

x = x&(x-1);

}

return countx;

}

假定x = 9999
10011100001111

答案: 8

思路: 将x转化为2进制,看含有的1的个数。

注: 每执行一次x = x&(x-1),会将x用二进制表示时最右边的一个1变为0,因为x-1将会将该位(x用二进制表示时最右边的一个1)变为0。

7、i=5;a=(++i)--;

求a=?i=?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: