滴滴的一些测试题
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=?
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=?
相关文章推荐
- [JZOJ4787] 数格子
- 2016.9.17测试解题报告
- Java Integer(-128~127)值的==和equals比较产生的思考
- HDU 5900 QSC and Master 区间DP
- 学习笔记--mysql的AB复制
- 数组排序法(一)
- Butterknife 8.4.0的一些问题
- mysql 索引区别
- centos 7 下配置免密码登录
- AE学习笔记之地图符号化
- per.ccz与png互转
- 项目难点
- Maven学习-继承
- Leetcode 403. Frog Jump 青蛙过河 解题报告
- HTTP协议
- 求小于n的素数个数(模板)
- 服务器远程管理简介(ILO,BMC,RSA)
- HDU 5901 Count primes 2016年沈阳网络赛 (Lehmer素数计数)
- Codevs 1215 迷宫(DFS)
- TCP/IP Sockets-1