2023年9月23日提高組T1 奶牛編號

2021-08-08 19:50:26 字數 1266 閱讀 3137

作為乙個神秘的電腦高手,farmer john 用二進位制數字標識他的奶牛。

然而,他有點迷信,標識奶牛用的二進位制數字,必須只含有k位「1」 (1 <= k <= 10)。 當然,每個標識數字的首位必須為「1」。  

fj按遞增的順序,安排標識數字,開始是最小可行的標識數字(由「1」組成的乙個k位數)。

不幸的是,他沒有記錄下標識數字。請幫他計算,第n個標識數字 (1 <= n <= 10^7)。

第1行:空格隔開的兩個整數,n和k。

第n個標識數字

lzh顯然我們只關心1在**,那麼我們用是個數字記錄每個1的位置。每次從右往左找到第乙個可以向右移動的1,把右邊的1全部移到最右邊,這樣我們就得到了乙個比原來大1的二進位制序列。這樣我們就在o(nk)的時間內搞定了

#include 

#include

#include

#include

#include

#include

#include

#define rep(i, st, ed) for (int i = st; i <= ed; i += 1)

#define drp(i, st, ed) for (int i = st; i >= ed; i -= 1)

#define erg(i, st) for (int i = ls[st]; i; i = e[i].next)

#define fill(x, t) memset(x, t, sizeof(x))

#define max(x, y) (x)>(y)?(x):(y)

#define min(x, y) (x)<(y)?(x):(y)

#define abs(x) (x)<(0)?(-(x)):(x)

#define inf 0x3f3f3f3f

#define n 1001

#define e 1001

#define l 1001

int n, k;

int pos[20];

inline int read()

int main(void)

while (-- n)

flag = true;

break;}}

if (!flag) }}

int cnt = k;

drp(i, pos[k], 1) else

}puts("");

return

0;}

2023年8月9日提高組T1 水題

小a和小a在玩乙個遊戲,這個遊戲是這樣的 現在有n個球,每次操作必須從中拿走k個球,不能操作者輸。因為小a的字典序比較大 小 所以小a先手。現在問你小a是否能贏。第一行乙個正整數t表示資料組數。接下來t行每行兩個正整數n和k。如果小a能贏,則輸出yes,否則輸出no。1 10 4 no hint 對...

2023年8月8日提高組T1 作業

小a作為乙個乖乖好學生,回到家後總是一絲不苟地完成老師布置的作業。這天,老師給小a布置了n項作業,每一項作業都有截止時間di和價值vi 你可以理解成每做完乙份作業就要快遞過去給老師,且快遞是不耗費時間的 每完成一項作業便可獲得其價值。但小a發現,自己每乙個單位時間內只能完成其中的一項作業,請你告訴小...

2023年8月8日提高組T1 作業

description 小a作為乙個乖乖好學生,回到家後總是一絲不苟地完成老師布置的作業。這天,老師給小a布置了n項作業,每一項作業都有截止時間di和價值vi 你可以理解成每做完乙份作業就要快遞過去給老師,且快遞是不耗費時間的 每完成一項作業便可獲得其價值。但小a發現,自己每乙個單位時間內只能完成其...