牛客網 牛客假日團隊賽5 隨機數 數字dp

2021-09-25 01:24:37 字數 2061 閱讀 9926

時間限制:c/c++ 1秒,其他語言2秒

空間限制:c/c++ 32768k,其他語言65536k

64bit io format: %lld

正如你所知,奶牛們沒有手指以至於不能玩「石頭剪刀布」來任意地決定例如誰先**的順序。她們甚至也不能通過仍硬幣的方式。

所以她們通過"round number"競賽的方式。第一頭牛選取乙個整數,小於20億。第二頭牛也這樣選取乙個整數。如果這兩個數都是 "round numbers",那麼第一頭牛獲勝,否則第二頭牛獲勝。

如果乙個正整數n的二進位制表示中,0的個數大於或等於1的個數,那麼n就被稱為"round number" 。例如,整數9,二進位制表示是1001,1001 有兩個'0'和兩個'1'; 因此,9是乙個round number。26 的二進位制表示是 11010 ; 由於它有2個'0'和3個'1',所以它不是round number。

很明顯,奶牛們會花費很大精力去轉換進製,從而確定誰是勝者。 bessie 想要作弊,而且認為只要她能夠知道在乙個指定區間範圍內的"round numbers"個數。

幫助她寫乙個程式,能夠告訴她在乙個閉區間中有多少hround numbers。區間是[start, finish],包含這兩個數。 (1 <= start < finish <= 2,000,000,000)

line 1: 兩個用空格分開的整數,分別表示start 和 finish。

line 1: start..finish範圍內round numbers的個數。

2 12

2     10  1x0 + 1x1  round

3     11  0x0 + 2x1  not round

4    100  2x0 + 1x1  round

5    101  1x0 + 2x1  not round

6    110  1x0 + 2x1  not round

7    111  0x0 + 3x1  not round

8   1000  3x0 + 1x1  round

9   1001  2x0 + 2x1  round

10  1010  2x0 + 2x1  round

11  1011  1x0 + 3x1  not round

12  1100  2x0 + 2x1  round

題意:給定乙個區間,尋找區間內二進位制表示法中0的個數大於等於1的個數的數的個數。

思路:把給定區間的上限用二進位制表示出來,其長度就是二進位制表示上限,舉個例子吧,1011011001,假定其為區間上限的二進位制表示,長度為10,所以說,任何長度小於10的二進位制數都沒有它大,所以我們就可以從長度為1開始列舉,長度為i=1的只有二進位制表示的1,只有乙個1,沒有0,不滿足題意,繼續遍歷,長度i>=2時要注意,最高位必須是1,所以也就是說最高位是已知的,在剩下的i-1 位中按照排列組合法求滿足條件的數的組合數,因為已經有了最高位的1,所以算的時候只要0的個數大於等於1的個數加1。當長度等於上限長度,但是數值小於等於上限數值的數,這個就要挨個遍歷尋找了。

組合公式:c[i][j]=c[i-1][j-1]+c[i-1][j];

accepted code:

#include using namespace std;

const int n = 2e9 + 7;

int m, n;

int dp[50][50], sum[50];

void init()

int solve(int x)

for (int i = len - 1; i > 0; i--)

if (ans0 >= ans1)//數本身二進位制表示也滿足條件

ans++;

ans0 = 0, ans1 = 1;

for (int i = len - 2; i >= 0; i--)

}return ans;

}int main()

牛客網 牛客假日團隊賽5 數字遊戲 模擬

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 奶牛們又在玩一種無聊的數字遊戲。輸得很鬱悶的貝茜想請你寫個程式來幫她在開局時 結果。在遊戲的開始,每頭牛都會得到乙個數n 1 n 1,000,000 此時奶牛們的分數均...

牛客假日團隊賽5 K

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 題目描述 最近,奶牛們熱衷於把金幣包在麵粉裡,然後把它們烤成餡餅。第i塊餡餅中含有ni 1 ni 25 塊金幣,並且,這個數字被醒目地標記在餡餅表面。奶牛們把所有烤好的...

牛客假日團隊賽 A 乘積最大

今年是國際數學聯盟確定的 2000 世界數學年 又恰逢我國著名數學家華羅庚先生誕辰90周年。在華羅庚先生的家鄉江蘇金壇,組織了一場別開生面的數學智力競賽的活動,你的乙個好朋友xz也有幸得以參加。活動中,主持人給所有參加活動的選手出了這樣一道題目 設有乙個長度為n的數字串,要求選手使用k個乘號將它分成...