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个。。。)。。。。。
也是因为项目的事情,没时间复习,再加上原来基础也没那么牢固,所以笔试屡受挫折。还好,我喜欢数学,个人智力能力也说得过去,因此还是有个面试机会的,比如京东。但是昨天得知二面没过,没有太多伤心,因为他问的问题并不是太难,我如果不做项目负责人,这些问题,完全在能力范围之内的。我只能说有点遗憾,不能说是损失。就是损失也是京东的损失,而不是我的损失。我就是有这样的自信。
不过说到底,还是自己水平不行。被耽误,被坑只是客观原因。之前实在是没空写博客,但是现在意识到需要整理,又正好有时间,就整理一下。
计算 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个。。。)。。。。。
相关文章推荐
- 你也一样重要的非技术贴,告诉你的求职信的写作9温馨提示
- java面试题二十五 构造函数
- java面试题二十四 继承题2
- java面试题二十三 接口
- [转载]Java程序员掌握的10大项知识体系--精通太难说出口
- 高效程序员的 7 个共同特征
- 黑马程序员——反射的理解与应用
- Hibernate面试问题集锦: 概述
- 从交换两个变量的值来看程序员的“奇技淫巧”
- 聊一下测试工程师的面试与招聘【转载自安大叔】
- Java面试问题集锦03-Java程序的基本结构
- 黑马程序员-----java基础(正则表达式和反射)
- 黑马程序员---C 语言学习笔记之指针
- 《程序员在第一季度追姐姐的书》——提升自己的形象气质
- 面试经典(7)--最大持续子阵
- hiho一下第65周微软面试题《Highway》题目分析
- mysql dba 面试题部分答案(转)
- 【JAVA面试题】之二:Java RandomAccessFile用法
- 黑马程序员-----java基础(IO下)
- java面试题