微软推理笔试题

推理问题

微软笔试题:利用天平砝码,三次将140克的盐 分成50、90克两份?



                       有一个天平,2克和7克砝码各一个。如何利用天平砝码在三次内将140克盐分成50,90克两份。

微软笔试题:快速求取一个整数的7倍


微软笔试题:有两根不均匀分布的香,每根香烧完的时间是一个小时,你能用什么方法来确定一段15分钟


微软笔试题:判断一个数是不是2的n次幂


推理答案
第一种方法:


第一次:先称 7+2克盐 (相当于有三个法码2,7,9)


第二次:称2+7+9=18克盐 (相当于有2,7,9,18四个法码)


第三次:称7+18=x+2,得出x是23,23+9+18=50克盐.


剩下就是90克了.


第二种方法:


1.先把140克盐分为两份,每份70克


2.在把70克分为两份,每份35克


3.然后把两个砝码放在天平两边,把35克面粉分成两份也放在两边(15+7=20+2)


现在有四堆面粉70,35,15,20,分别组合得到


70+20=90


35+15=50










乘法相对比较慢,所以快速的方法就是将这个乘法转换成加减法和移位操作。


可以将此整数先左移三位(×8)然后再减去原值:X << 3 - X。












一支两端同时点燃烧完一支是30分,另一支只点一端烧了一半,剩下的支持30分钟,在同时点燃两端,得15分钟


  



设要判断的数是无符号整数X。


首先判断X是否为0,如果为0则不是2的n次幂,返回。


X和X-1进行按位与操作,如果结果是0,则说明这个数是2的n次幂;如果结果非0,则说明这个数不是2 的n次幂。


证明:


如果是2的n次幂,则此数用二进制表示时只有一位是1,其它都是0。减1后,此位变成0,后面的位变成1,所以按位与后结果是0。


如果不是2的n次幂,则此数用二进制表示时有多位是1。减1后,只有最后一个1变成0,前面的 1还是1,所以按位与后结果不是0。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值