時間限制: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題意:給定乙個區間,尋找區間內二進位制表示法中0的個數大於等於1的個數的數的個數。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
思路:把給定區間的上限用二進位制表示出來,其長度就是二進位制表示上限,舉個例子吧,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個乘號將它分成...