1. 程式人生 > >2018第九屆藍橋杯省賽c++B組 測試次數

2018第九屆藍橋杯省賽c++B組 測試次數

x星球的居民脾氣不太好,但好在他們生氣的時候唯一的異常舉動是:摔手機。
各大廠商也就紛紛推出各種耐摔型手機。x星球的質監局規定了手機必須經過耐摔測試,並且評定出一個耐摔指數來,之後才允許上市流通。


x星球有很多高聳入雲的高塔,剛好可以用來做耐摔測試。塔的每一層高度都是一樣的,與地球上稍有不同的是,他們的第一層不是地面,而是相當於我們的2樓。


如果手機從第7層扔下去沒摔壞,但第8層摔壞了,則手機耐摔指數=7。
特別地,如果手機從第1層扔下去就壞了,則耐摔指數=0。
如果到了塔的最高層第n層扔沒摔壞,則耐摔指數=n


為了減少測試次數,從每個廠家抽樣3部手機參加測試。


某次測試的塔高為1000層,如果我們總是採用最佳策略,在最壞的運氣下最多需要測試多少次才能確定手機的耐摔指數呢?


請填寫這個最多測試次數。


注意:需要填寫的是一個整數,不要填寫任何多餘內容。

思路:先思考如果只有兩個手機,100層樓,應該怎麼摔。 假設最多摔x次。第一次肯定摔x層,第二次摔x+x-1層,……第n次摔x*n-n+1層,這樣能保證最多摔x次。第一次摔x層,如果摔碎了,從第一層開始摔,正好x次。如果第x層沒碎,摔x+x-1層,如果碎了,從x+1開始摔,做多也是x次。

一共就是1+2+3+4+……x>=100   x=14

如果三個手機怎麼辦?

把兩層的摔的結果儲存下來,a[1]=1,a[2]=3,a[3]=6……

a[1]+a[2]+a[3]+……a[x]>=1000     x=18

第一次摔第a[18]層如果碎了,最多再摔18次,所以結果是19次。