百度二面经历,与大家分享

sjjwind 2012-05-10 12:55:37
面试开始,问了些无关痛痒的话,然后面试官说了句,你数学怎么样。我说还行,然后就说了句:“我最喜欢数学题,我们来做几个数学题吧”,然后我就开始悲剧了。
第一题,任意给一个数,试证明这个数的某个倍数的十进制表示是01串,比如3的倍数111是二进制表示,5的倍数10是二进制表示,等等。
第二题,素数有无穷多个,请问是怎么证明的。
第三题,给一个很大的数组,里面有两个数只出现过一次,其他数都出现过两次,把这两个数找出来。
我开始说了排序和哈希表,他问我还有没有更好的方法,然后我说用异或,异或了半天没弄出来。
第四题,把一个链表逆过来,要求空间复杂度O(1),这个算简单的。
至此我的二面就此结束,数学题惨不忍睹,没思及此,伤心欲绝。
各位有什么好的方法请不吝指教。
...全文
692 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
某笨緢_Jun 2013-10-17
  • 打赏
  • 举报
回复
楼上都是大牛 - - 膜拜`
peng_weida 2012-09-26
  • 打赏
  • 举报
回复
明天百度二面,谢谢分享!
lionmanong 2012-05-12
  • 打赏
  • 举报
回复
感谢楼主的分享,先马后看.... 祝楼主好运,^-^
liuwons 2012-05-12
  • 打赏
  • 举报
回复
楼上好多强人,膜拜下。。。
modyaj 2012-05-12
  • 打赏
  • 举报
回复
我喜欢反证法 我也只想到了这个方法
q601564446 2012-05-11
  • 打赏
  • 举报
回复
我尽然看懂了!!!厉害[Quote=引用 6 楼 的回复:]
引用 2 楼 的回复:

第二个数学题很难啊


这个不难的。

假若素数只有有限多个,设最大的一个是P,从2到P的全体素数是:
  2,3,5,7,11……,P。
  所有的素数都在这里,此外再没有别的素数了。
  现在,我们来考察上面从2到P的全体素数相乘、再加上1这个数,设它是A,即
  A=2×3×5×7×11×……×P+1。
  A是一个大于1的正整数,它不是素数……
[/Quote]
sjjwind 2012-05-11
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 的回复:]
引用 12 楼 的回复:

晕第一题也不算特别难,抽屉原则就可以了,不过面试估计还是想不出
对一个数X,那么从1,10,100,......10^(x*x+1)取模,必然会有x个相同的值,将这x值相加就可以了


你的没看懂。

第一题还有一种方法

假设序列1,11,111,1111…用A1~AN标识,下脚标N即为1的个数,如:A1=1,A2=11,A3=111…
其中没有……
[/Quote]
嗯,这个方法很赞
ZhengJiepeng 2012-05-11
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

晕第一题也不算特别难,抽屉原则就可以了,不过面试估计还是想不出
对一个数X,那么从1,10,100,......10^(x*x+1)取模,必然会有x个相同的值,将这x值相加就可以了
[/Quote]

你的没看懂。

第一题还有一种方法

假设序列1,11,111,1111…用A1~AN标识,下脚标N即为1的个数,如:A1=1,A2=11,A3=111…
其中没有一个是N的倍数,即AK mod N不等于0(K属于1~N),并且AK mod N的余数各不相同,设它们为a1,a2,a3,…,aN,但AK mod N的余数最多只有N-1个不同,则由鸽巢原理可知,a1,a2,a3,…,aN中必有两个相同,即ai=aj(j>i),则Aj-Ai=0(mod N),Aj-Ai即为所求的0和1组成的十进制数M,得证。
pathuang68 2012-05-10
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 的回复:]

我的做法是用任何一个数都可以分解成如果素数的乘积,e = p1*p2*p3*p4*...*pn,然后构建一个数是p1*p2*p3*...Pn+1,如果这个数是素数,那么得证,如果不是素数,那么它里面一定可以分解成若干素数的乘积,但是得到的这个数却不能被p1...pn中的任何一个数整除,故一定存在一个新的不同于那n个数的素数,依次类推,我可以用有限个数去构建无穷多个素数数
只可惜这个问题以前就知……
[/Quote]

嗯,其实这个题目有很多种证明方式,比如用Fermat数。

另外,还可以用Goldbach Conjecture的Euler版本(即所谓的1+1,虽然数学上还没有被严格证明,但大家都认为应该是正确的),证明素数可以无穷大。
wsxxiaohao 2012-05-10
  • 打赏
  • 举报
回复
围观大牛
sjjwind 2012-05-10
  • 打赏
  • 举报
回复
我的做法是用任何一个数都可以分解成如果素数的乘积,e = p1*p2*p3*p4*...*pn,然后构建一个数是p1*p2*p3*...Pn+1,如果这个数是素数,那么得证,如果不是素数,那么它里面一定可以分解成若干素数的乘积,但是得到的这个数却不能被p1...pn中的任何一个数整除,故一定存在一个新的不同于那n个数的素数,依次类推,我可以用有限个数去构建无穷多个素数数
只可惜这个问题以前就知道解,在面试的时候却没想出来。
pengfoo 2012-05-10
  • 打赏
  • 举报
回复
果然强大[Quote=引用 6 楼 的回复:]
引用 2 楼 的回复:

第二个数学题很难啊


这个不难的。

假若素数只有有限多个,设最大的一个是P,从2到P的全体素数是:
  2,3,5,7,11……,P。
  所有的素数都在这里,此外再没有别的素数了。
  现在,我们来考察上面从2到P的全体素数相乘、再加上1这个数,设它是A,即
  A=2×3×5×7×11×……×P+1。
  A是一个大于1的正整数,它不是素数……
[/Quote]
fishion 2012-05-10
  • 打赏
  • 举报
回复
..像第二题,一般都用反证法,只是没想到怎么反证而已
shenyan008 2012-05-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 2 楼 的回复:

第二个数学题很难啊


这个不难的。

假若素数只有有限多个,设最大的一个是P,从2到P的全体素数是:
2,3,5,7,11……,P。
所有的素数都在这里,此外再没有别的素数了。
现在,我们来考察上面从2到P的全体素数相乘、再加上1这个数,设它是A,即
A=2×3×5×7×11×……×P+1。
A是一个大于1的正整数,它不是素数,就是合数。
……
[/Quote]
学习了
nice_cxf 2012-05-10
  • 打赏
  • 举报
回复
晕第一题也不算特别难,抽屉原则就可以了,不过面试估计还是想不出
对一个数X,那么从1,10,100,......10^(x*x+1)取模,必然会有x个相同的值,将这x值相加就可以了
东莞某某某 2012-05-10
  • 打赏
  • 举报
回复
让我这代码工人情何以堪呢
hen_hao_ji 2012-05-10
  • 打赏
  • 举报
回复
都介于牛A与牛C之间的人,orz
nice_cxf 2012-05-10
  • 打赏
  • 举报
回复
第一题难度看起来很大,没想到什么好的办法。。。
第二这个只要知道就不难,不知道就基本回答不了
第三简单,异或就可以了
4也不是太复杂
gold_water 2012-05-10
  • 打赏
  • 举报
回复
hackbuteer1 2012-05-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 2 楼 的回复:

第二个数学题很难啊


这个不难的。

假若素数只有有限多个,设最大的一个是P,从2到P的全体素数是:
2,3,5,7,11……,P。
所有的素数都在这里,此外再没有别的素数了。
现在,我们来考察上面从2到P的全体素数相乘、再加上1这个数,设它是A,即
A=2×3×5×7×11×……×P+1。
A是一个大于1的正整数,它不是素数,就是合数。
……
[/Quote]
反证法果然很强大啊
加载更多回复(6)

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧