牛客網刷題29 2道題)

2022-07-28 04:33:13 字數 1345 閱讀 7560

有乙隻兔子,從出生後第3個月起每個月都生乙隻兔子,小兔子長到第三個月後每個月又生乙隻兔子,假如兔子都不死,問每個月的兔子總數為多少?

/*** 統計出兔子總數。

* * @param monthcount 第幾個月

* @return 兔子總數

*/public static int gettotalcount(int monthcount)

輸入int型表示month

輸出兔子總數int型

示例1

9

34
斐波那契額數列的遞推公式:f(n) = f(n-1)+f(n-2)

第1個月:1只兔子,第二個月:1只兔子,第3個月2只兔子。

從第3個月起,當前月的兔子數量等於前兩月兔子數量之和。

法一:遞迴

var month;

while(month = readline())

return f(month-2) + f(month-1);

}console.log(f(month));

}

法二:

var month;

while(month = readline())

console.log(f3);

}

輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。

進製轉換。

位運算。

法一:當n<=0時:用補碼表,即把n的絕對值轉換為二進位制,接著取反碼,最後加1;此時,算出1的個數。

當n>0時:把n轉換為二進位制,算出1的個數。

當我看到解析的時候,被解析的這種方法驚了,酷啊!此方法是:把n-1和n按位與,即n&(n-1),完成一次此操作,把1個1變成了0,所以判斷能夠完成幾次n&(n-1),完成幾次就是幾個1。詳解如下:

如果乙個整數不為0,那麼這個整數至少有一位是1。如果我們把這個整數減1,那麼原來處在整數最右邊的1就會變為0,原來在1後面的所有的0都會變成1(如果最右邊的1後面還有0的話)。其餘所有位將不會受到影響。

舉個例子:乙個二進位制數1100,從右邊數起第三位是處於最右邊的乙個1。減去1後,第三位變成0,它後面的兩位0變成了1,而前面的1保持不變,因此得到的結果是1011.我們發現減1的結果是把最右邊的乙個1開始的所有位都取反了。這個時候如果我們再把原來的整數和減去1之後的結果做與運算,從原來整數最右邊乙個1那一位開始所有位都會變成0。如1100&1011=1000.也就是說,把乙個整數減去1,再和原整數做與運算,會把該整數最右邊乙個1變成0.那麼乙個整數的二進位制有多少個1,就可以進行多少次這樣的操作。

function numberof1(n)

return sum;

}

牛客網刷題31 2道題)

給定乙個32位整數n,返回該整數二進位制形式1的個數。輸入乙個整數,代表n,n為32為整數。輸出乙個整數,代表n的二進位制表示式中1的個數。示例1 1 1示例2 2 31 時間複雜度o 1 o 1 額外空間複雜度o 1 o 1 進製轉換 位運算把輸入的資料轉成二進位制字串。把轉換後的二進位制字串與1...

牛客網刷題

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 立華奏在學習初中數學的時候遇到了這樣一道大水題 設箱子內有 n 個球,其中給 m 個球打上標記,設一次摸球摸到每乙個球的概率均等,求一次摸球摸到打標記的球的概率 e...

牛客網刷題

時間限制 c c 2秒,其他語言4秒 空間限制 c c 524288k,其他語言1048576k 64bit io format lld 立華奏是乙個剛剛開始學習 oi 的萌新。最近,實力強大的 qingyu 當選了 iods 9102 的出題人。眾所周知,iods 是一場極其毒瘤的比賽。為了在這次...