您的位置:首页 > 职场人生

2016年一些面试题的整理和心情--1异或到100

2015-09-27 13:40 513 查看
2015年,被实验室项目的事情,整的焦头烂额。其中有合作不愉快的原因,也有项目本身需求的变动问题。不是不喜欢合作,而是合作需要大家团结一致。写项目期间,面临各种笔试面试之类的,大家不上心,我可以忍受。我作为负责人,必须为项目负责,项目的事情涉及的地方也确实有一点繁琐,耽误了很多复习时间。再者,我做事有原则,做好一件事再说另一件事,虽然大家都认为找工作比实验室项目重要,但是没有别人接手之前,还是应该为项目负责的。那些对于现在做的事情不负责任的人,怎么能相信他们能对以后的事情负责。

也是因为项目的事情,没时间复习,再加上原来基础也没那么牢固,所以笔试屡受挫折。还好,我喜欢数学,个人智力能力也说得过去,因此还是有个面试机会的,比如京东。但是昨天得知二面没过,没有太多伤心,因为他问的问题并不是太难,我如果不做项目负责人,这些问题,完全在能力范围之内的。我只能说有点遗憾,不能说是损失。就是损失也是京东的损失,而不是我的损失。我就是有这样的自信。

不过说到底,还是自己水平不行。被耽误,被坑只是客观原因。之前实在是没空写博客,但是现在意识到需要整理,又正好有时间,就整理一下。

计算 1^2^3^4.....^100:

这个问题,其实在笔试的时间内,不太容易想出来。后来我用了我的咒语去解题。咒语很两句话,第一句是,充分挖掘已知条件。第二句是,看出考点在哪里,按照考点解决。其中第二句很有意思,那是我在06年初三复习班上想明白的。如果这道题放在位运算的一章,相信大家都会做了。这就是位运算的题。既然是位运算的题,那么讲十进制数转成二进制数再说,转谁呢?转1?没意义。所以转100,倒着运算就行。100的2进制数是1100100,7位数。异或是什么意思?同0异1。先看第一位,99的2进制数是1100011,第一位是一样的。直到64,其最高位都是1,因此,有100-64+1=37个1,也就是37个1一起异或,结果呢?当然是1,也就是说,最高位异或结果是1。接着看第二位,32-63时,次高位是1,96-100时,次高位也是1。也就是有37个1异或。以此类推。实质是分别求,各位上的数字:有单数个数字,此位为1,则异或结果,此位为1。有双数个数字,此位为1,则异或结果,此位为0。最后计算最终结果。

问题在于,其他位怎么以此类推。常规的,比如1-100中,第4位数,也就是2的3次方这个位上,异或结果是多少呢?首先2的3次方是8,因此,小于8的数,此位为0,异或结果当然也是0,8-15这8个数字,在此位上为1,下一个数,此位为1是16+8,这样连续8个数字又是此为位1,下一个连续的8个数,此位为1,是32+8。下一个段是32+16+8,下一段是64+8,下一段是64+16+8,下一段是64+32+8(超了100,结束)。这种方法不简单。但是我目前没想到更好的方法。

(接上面的例子)也就是说,可以先求1-100中,有多少个完整的第4位数为1的序列段,

1000 - 1111(8-15)连续8个,中间隔了8个数

11000 - 11111(24-31)又连续8个,中间隔了8个数

101000 - 101111(40-47)又连续8个,中间隔了8个数

111000 - 111111(56-63)又连续8个,中间隔了8个数

1001000-1001111(56-63)又连续8个,中间隔了8个数

。。。。。(同理,如果是求第5位数上的1出现次数,连续16个,隔16个,又连续16个。。。)。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: