每天一道演算法題 多多的魔術盒子

2021-10-07 05:52:43 字數 872 閱讀 3796

多多雞有n個魔術盒子(編號1~n),其中編號為i的盒子裡有i個球。

多多雞讓皮皮蝦每次選擇乙個數字x(1 <= x <= n),多多雞就會把球數量大於等於x個的盒子裡的球減少x個。

通過觀察,皮皮蝦已經掌握了其中的奧秘,並且發現只要通過一定的操作順序,可以用最少的次數將所有盒子裡的球變沒。

那麼請問聰明的你,是否已經知道了應該如何操作呢?

輸入描述:

第一行,有1個整數t,表示測試用例的組數。

(1 <= t <= 100)

接下來t行,每行1個整數n,表示有n個魔術盒子。

(1 <= n <= 1,000,000,000)

輸出描述:

共t行,每行1個整數,表示要將所有盒子的球變沒,最少需要進行多少次操作。
輸入例子1:

312

5

輸出例子1:

1

23

分析:首先想到的就是通過二分法來解決,每次取中間的數,後面的數字一次減x,再次尋找陣列起始點與中間數的中間值,直到陣列中間值等於a[0],就相當於求二分法的時間複雜度log(n)底數為2。然後通過分析,如果是2的整數倍,那麼a[n]還需要一步操作,如果不是2的整數倍也需要對a[0]進行減1操作。所以就是求 log(n)+1。

看到有人通過求二進位制的長度解決這道題,道理一樣,求二級制也是不斷除以2,其長度就是除以2的次數加1。

public class main 

}}

每天一道演算法題

no.1 棧是特殊的線性表,它。a.對 b.錯答案 錯,它的插入和刪除都是在同一端進行的。no.2 n個葉子節點的滿二叉樹 除了葉子節點,每個節點都有兩個孩子 總共有多少個節點?a.2n 1 b.2n c.n 1 d.n答案 a 滿二叉樹我們講過了,度為0的節點比度為2的加點多乙個。滿二叉樹是特殊的...

每天一道演算法題

1.給定乙個只包括 的字串,判斷字串是否匹配。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。思路 正確思路 不需要考慮輸入內容是否合法,這只是做題,不是工程 定義乙個字典,後括號為鍵,前半部分為值 定義乙個元素儲存棧頂,注意這個設定,取棧...

每天一道演算法題

1 js計算某個字串出現的次數 j ascript計算乙個字串最多重複的字元及出現次數.var str zhaochucichuzuiduodezifu var o for var i 0,length str.length i length i else console.log o 輸出的是完整的...