1—100猜數字,騰訊筆試題

問題描述:
       A給出在[1,100]之間的一個數,B進行猜數字。遊戲規則如下:
            1、如果猜的小了,會提示B猜的小了。
            2、如果有一次猜的大了,會提示猜的大了,以後猜的無論大小,都只會提示錯誤,不會提示大小。
       問:至少幾次可以猜對數字?第一次應該猜那個數字?
解答如下:
      假設你猜的第一個數字是x。
            那麼最少次數最小也要爲x,因爲第一次如果猜的大了,會提示你猜的大了,你可以確定正確數字的範圍是[1,x-1],所以,你最壞需要再猜x-1次,總共也就是x次。如果你第一次猜小了,會提示你猜的小了,你可以確定正確數字的範圍是[x+1,100],接下來,你需要猜第二次,同樣面臨的是猜大還是猜小,猜第二次的時候,你所要關心的問題應該是如果猜的大了,在最壞的情況下,要猜對所需要的次數應該小於等於x-1。正因爲如此,你第二次所要猜的數字,最大應該爲x+(x-1)。如果猜的比2x-1小的話,可以保證第二次猜的次數小於等於x-1,但從總體考慮,如果第二次猜的數字小於2x-1的話,會增加後面猜的次數。爲了最後結果的最優,所以第二次應該猜的數字爲2x-1。以此類推,步長每次都比上一次少一次。
下面就是解x的值。
      猜的次數肯定不能爲負數。所以
                          1+2+3+4+5+……+x=x(x+1)/2>100
      最小次數就是上面不等式解的最小正整數,結果爲14次,第一次猜14.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章