1. 程式人生 > >2018年第九屆藍橋杯javaB組《摔手機》題解

2018年第九屆藍橋杯javaB組《摔手機》題解

【原題】

標題:測試次數

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

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

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

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

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

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

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

【解題】

這道題應該是根據那道谷歌面試題改編的題目,那道題是摔玻璃球,感興趣的可以在網上搜搜。

下面直接說這道題的解題思路:

首先應該注意題目說的3部手機,這個條件很重要,只有3部手機,在測試時如果摔壞了就沒有,但就這3部手機還必須得能夠用最好的方法去測試。

方法如下:

第一步:先用第一部手機,從100樓往下摔,如果摔壞了,就證明手機的耐摔指數在1-100直接,如果沒摔壞,就再從200樓往下摔,以此類推,這就確定了百位數字。

第二步:用第二部手機,從十位樓數往下摔,假如第一步在500樓摔壞了,這步就從410樓開始摔,摔壞了就確定了十位,否則繼續增加十位樓數,從而確定十位數字。

第三步:用第三部手機,從個位樓數往下摔,假如經過前兩步,手機在430樓摔碎了,就從421樓開始摔,依次增加1樓,最終確定個位數字。

最壞情況下:

第一步測試的樓數依次為:100 200 300 400 500 600 700 800 900 1000 樓 在1000樓的時候摔壞

第二步測試的樓數依次為:910 920 930 940 950 960 970 980 990 在990樓還沒有壞

第三步測試的樓數依次為:991 992 993 994 995 996 997 998 999 在999樓壞了

因此 最壞情況下的最少測試次數為28次

【答案 28】

以上為個人觀點,並不保證答案正確,不過可以確定思路是這樣,最終的答案應該是介於27-30之間 如有疑問或者不同答案 歡迎在評論裡討論交流 

相關推薦

2018九屆藍橋javaB手機題解

【原題】標題:測試次數x星球的居民脾氣不太好,但好在他們生氣的時候唯一的異常舉動是:摔手機。各大廠商也就紛紛推出各種耐摔型手機。x星球的質監局規定了手機必須經過耐摔測試,並且評定出一個耐摔指數來,之後才允許上市流通。x星球有很多高聳入雲的高塔,剛好可以用來做耐摔測試。塔的每一

2018九屆藍橋B題解

第一題:第幾天答案:125很簡單的數一數就好了,但是我當時可能沒帶腦子,按2010年算的124天。第二題:明碼答案:387420489按著題目把這些數轉換成8位元組的二進位制數就可以了,負數的二進位制是

2018九屆藍橋B七題詳解:螺旋曲線

一見這道題,就覺得這道題目很有意思。很快就有了思路(先將圖形分成四個象限,對每個象限進行相應的處理)。出發點是好的,但方法卻選用的不好。舊方法:(如圖所示)將一個象限分為兩個部分,以綠圈為界:第一象限:當點位於綠圈下方,執行++y操作,並使sum值也自增;當點位於綠圈左方,執

2018九屆藍橋C/C++A省賽(最後一題)

第十題 付賬問題   【題目描述】    幾個人一起出去吃飯是常有的事。但在結帳的時候,常常會出現一些爭執。    現在有 n 個人出去吃飯,他們總共消費了 S 元。其中第 i 個人帶了 ai 元。幸運的是,所有人帶的錢的總數是足夠付賬的,但現在問題來了:每個

【noip模擬賽】地球危機(2018九屆藍橋C/C++A省賽 三體攻擊)

題目描述 三體人將對地球發起攻擊。為了抵禦攻擊,地球人派出了 $A × B × C$ 艘戰艦,在太 空中排成一個 $A$ 層 $B$ 行 $C$ 列的立方體。其中,第 $i$ 層第 $j$ 行第 $k$ 列的戰艦(記為戰艦 $d(i, j,k)$)的生命值為 $d_{i, j,k}$。 三體人將會對地球發

藍橋2018九屆藍橋省賽B三題—乘積尾零

如下的10行資料,每行有10個整數,請你求出它們的乘積的末尾有多少個零? 5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 6113 56

藍橋2018九屆藍橋省賽B六題—遞增三元

給定三個整數陣列 A = [A1, A2, … AN], B = [B1, B2, … BN], C = [C1, C2, … CN], 請你統計有多少個三元組(i, j, k) 滿足: 1. 1 <= i, j, k <= N 2. Ai < Bj &l

2018九屆藍橋C/C++A省賽 題面&部分題解

首先,原題:連結: https://pan.baidu.com/s/1UzRN6Mf2Dwp0263F-MMESg 密碼: 2ryh第一題標題:分數 1/1 + 1/2 + 1/4 + 1/8 + 1/16 + .... 每項是前一項的一半,如果一共有20項, 求這個和是

2018九屆藍橋省賽C++A題目分析以及思路總結

    第九屆藍橋杯省選在4月初結束了,最近也出了成績,因為是第一次參加藍橋杯,出結果前有些緊張,不過結果也算是意料之中,成功晉級了國賽了,在這裡總結一下我做題的思路,當然,只說一下解出來的題,有些題因為時間關係,考場上選擇了得分價效比方式而不是複雜的標準解。第一題 分數1/

2018九屆藍橋C語言B答案六題:遞增三元

標題:遞增三元組給定三個整數陣列A = [A1, A2, ... AN], B = [B1, B2, ... BN], C = [C1, C2, ... CN],請你統計有多少個三元組(i, j, k) 滿足:1. 1 <= i, j, k <= N  2. Ai

2018九屆藍橋C語言B答案第二題:明碼

標題:明碼漢字的字形存在於字型檔中,即便在今天,16點陣的字型檔也仍然使用廣泛。16點陣的字型檔把每個漢字看成是16x16個畫素資訊。並把這些資訊記錄在位元組中。一個位元組可以儲存8位資訊,用32個位元組就可以存一個漢字的字形了。把每個位元組轉為2進製表示,1表示墨跡,0表示

2018九屆藍橋大學生AC/C++十題

描述一下自己:自己沒控制好時間 ,沒有提前練習;問題描述:n個人吃飯,總共花費m錢數,n個人分別帶a0,a1,....錢,計算怎麼出錢使得這n個人出的錢的方差最小。輸出方差即可。輸入: 10 30 2 1 3 4 5 6 7 8 9 10 輸出: 0.7928忘了輸入輸出的格

2018九屆藍橋C語言B答案七題:螺旋折線

標題:螺旋折線如圖p1.png所示的螺旋折線經過平面上所有整點恰好一次。  對於整點(X, Y),我們定義它到原點的距離dis(X, Y)是從原點到(X, Y)的螺旋折線段的長度。  例如dis(0, 1)=3, dis(-2, -1)=9  給出整點座標(X, Y),你能計

2018九屆藍橋【C++省賽B】【八題:日誌統計】——附解題程式碼

2018年第九屆藍橋杯題目彙總 第八題 標題:日誌統計 小明維護著一個程式設計師論壇。現在他收集了一份”點贊”日誌,日誌共有N行。其中每一行的格式是: ts id 表示在ts時刻編號id的帖子收到一個”贊”。 現在

2018九屆藍橋【C++省賽B】【六題:遞增三元】——二分解法(附解題程式碼)

2018年第九屆藍橋杯題目彙總 第六題 標題:遞增三元組 給定三個整數陣列 A = [A1, A2, … AN], B = [B1, B2, … BN], C = [C1, C2, … CN], 請你統計有多

2018九屆藍橋省賽C/C++ A(蒻雞自己寫的,看不上勿噴,自己的一點想法)

第一題 標題:分數 1/1 + 1/2 + 1/4 + 1/8 + 1/16 + …. 每項是前一項的一半,如果一共有20項, 求這個和是多少,結果用分數表示出來。 類似: 3/2 當然,這只是加了前2項而已。分子分母要求互質。 注意: 需要

2018九屆藍橋【C++省賽B】【第一題:幾天】

2018年第九屆藍橋杯題目彙總 第一題 標題:第幾天 2000年的1月1日,是那一年的第1天。 那麼,2000年的5月4日,是那一年的第幾天? 注意:需要提交的

2018九屆藍橋Java b總結

public class Main{ public void static main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int tleng

2018九屆藍橋省賽

今天不想用腦所以就水一水部落格吧...今年的藍橋杯出的題目和之前我準備的可太不一樣了,我以為又是一堆的搜尋題,暴力杯可還行,萬萬沒想到這和我想的好像不太一樣啊,反正就是硬著頭皮做...4.1的愚人杯可還行,早早的就和我華哥一起去考場了,一進去就開始敲模板,素數篩,並查集,線段

2018九屆藍橋—C/C++程式設計省賽解題

2018-4-14 感覺藍橋杯的風格變了,以前都是暴力搜尋類的題目比較多,然而這次並不是… 1.第幾天 2000年的1月1日,是那一年的第1天。 那麼,2000年的5月4日,是那一年的第幾天? 注意:需要提交的是一個整數,不要填寫任何多餘內容。