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個。
/—————————————————————————————————————————————————————————————————/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM