ebay笔试题2012年10月13号(你能做出几道)

ebay的逻辑题出的很好,很费脑子,我把记忆深的几道题写出来,对我算是总结,大家可以看看能做出来几道。

1.某个数除以2 1 ,除以3 1,除以。。。。除以10 1,除以110,求这个数最小为多少

2.1000盏灯,初始状态全灭;1000个开关,第一个开关改变所有11的倍数的灯的状态,第二个开关改变所有22的倍数的灯的状态……直到第1000个开关。
1000个开关都执行一遍之后,哪些灯亮着?

3.10个圆最多可以把平面分成多少部分?

4.1*2*3....*100得到的数有几个0

/*****************************************

 

 

 

 

 

 

***********************************************************************/

2012-10-13 ebay

1.某个数除以2 1 ,除以3 1,除以。。。。除以10 1,除以110,求这个数最小为多少。

答:首先这个数是2345678910的最小公倍数+1.求最小公倍数的方法如下:

/——————————————————————————————/

首先把两个数的质因数写出来,最小公倍数等于它们所有的质因数的乘积(如果有几个质因数相同,则比较两数中哪个数有该质因数的个数较多,乘较多的次数)。 
比如求4530的最小公倍数。 
45=3*3*5 
30=2*3*5 
不同的质因数是2,3,53是他们两者都有的质因数,由于45有两个330只有一个3,所以计算最小公倍数的时候乘两个3. 
最小公倍数等于2*3*3*5=90 

又如计算36270的最小公倍数 
36=2*2*3*3 
270=2*3*3*3*5 
不同的质因数是52这个质因数在36中比较多,为两个,所以乘两次;3这个质因数在270个比较多,为三个,所以乘三次。 
最小公倍数等于2*2*3*3*3*5=540 
2040的最小公倍数是40

/————————————————————————/

所以,求出最小公倍数为2520.那个数就是2520k+1,然后给k赋不同的值,看能不能除尽11,最后所25201,这个地方没想到好方法。


2.1000盏灯,初始状态全灭;1000个开关,第一个开关改变所有11的倍数的灯的状态,第二个开关改变所有22的倍数的灯的状态……直到第1000个开关。
1000个开关都执行一遍之后,哪些灯亮着?

解答:
如果是不考虑数学,直接编程,那么建立一个拥有1000个标志位的数组,使用for循环对1000个开关和1000个灯进行遍历,标志初识为0,改变状态时在0/1切换。最后状态为1的位,灯亮。
当然这种算法复杂度相当高O(N²),并不是理想的解决方案。
如果先进行数学分析,第N个灯,将N进行因式分解,无非是N= 1*N = 2*(N/2)...,那么该灯在第1、第n、第2、第n/2……的开关执行的时候,灯的状态改变;可以发现均为成对出现,那么灯的最终状态是不变的。当然也有例外,那就是当N为完全平方数,即N=m*m的时候,此时存在奇数个开关控制灯的状态,那么最终该灯会是亮的。好了,到这里,程序会变得很简单,寻找1000之内所有的完全平方数,这些灯最终都会是开着的。(答案来自百度搜索,问题来自一位牛X的腾讯内部招聘官,不肯告知答案)

答案就是31个,32*32=1024.


3.n个圆最多可以把平面分成多少部分?


n个圆最多可以把平面分成S(n)个部分。
则可得:
S(1)=2
S(2)=4
...
n-1个圆最多将平面分成S(n-1)个部分,此时,对于第n个圆来说,它与先前的n-1个圆最多有2(n-1)个交点,即此第n个圆最多被这2(n-1)个交点分成2(n-1)条圆弧段。由于每增加一个圆弧段,便可将原来的某个区域分为两个区域(此处最好看图分析)。因此,第n个圆使平面增加了2(n-1)个区域。因此可得递推关系式:
S(n)=S(n-1)+2(n-1), 其中n大于等于2
由此递推关系式得到:
S(n)=S(1)+2*1+2*2+...+2*(n-1)=2+n*(n-1)=n^2-n+2
n个圆最多可以把平面分成(n^2-n+2)个部分。(可以自己手动验证一下,答案应该是正确的)

扩充题:n条直线可将平面最多分成几部分?

答:1条直线最多分成2个部分
2条直线最多分成4个部分
3条直线最多分成7个部分
n-1条直线时,增加一条直线,最多与原来的n-1条直线都相交,增加n部分
所以,
n条直线最多分成 1+1+2+3+4....+n=1+n*(n+1)/2


4.1*2*3....*100最后的数有几个0

答:

/————————————————————————————/

110,连续10个整数相乘: 
1×2×3×4×5×6×7×8×9×10
连乘积的末尾有几个0
答案是两个0。其中,从因数10得到10,从因数25相乘又得到10,共计两个。 
刚好两个0?会不会再多几个呢? 
如果不相信,可以把乘积计算出来,结果得到 
原式=3628800。你看,乘积的末尾刚好两个0,想多1个也没有。 
那么,如果扩大规模,拉长队伍呢?譬如说,从1乘到20
1×2×3×4×…×19×20。这时乘积的末尾共有几个0呢? 
现在答案变成40。其中,从因数10得到10,从20得到10,从52相乘得到10,从154相乘又得到10,共计40
刚好40?会不会再多几个? 
请放心,多不了。要想在乘积末尾得到一个0,就要有一个质因数5和一个质因数2配对相乘。在乘积的质因数里,2多、5少。有一个质因数5,乘积末尾才有一个0。从1乘到20,只有5101520里面各有一个质因数5,乘积末尾只可能有40,再也多不出来了。 
把规模再扩大一点,从1乘到30
1×2×3×4×…×29×30。现在乘积的末尾共有几个0
很明显,至少有60
你看,从130,这里面的51015202530都是5的倍数。从它们每个数可以得到10;它们共有6个数,可以得到60
刚好60?会不会再多一些呢? 
能多不能多,全看质因数5的个数。255的平方,含有两个质因数5,这里多出15来。从1乘到30,虽然30个因数中只有6个是5的倍数,但是却含有7个质因数5。所以乘积的末尾共有70
乘到30的会做了,无论多大范围的也就会做了。 
例如,这次乘多一些,从1乘到100
1×2×3×4×…×99×100。现在的乘积末尾共有多少个0

——————————————————

能分解出多少个5,就有多少个零,

100÷5=20
100÷25=4
当然24个。
/—————————————————————————————————————————————————————————————————/

 

posted on 2012-10-13 19:58  奋威校尉  阅读(2519)  评论(7编辑  收藏  举报

导航