滴滴的一些测试题

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=?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值