奶牛編號 組合數

2021-10-09 03:51:30 字數 1380 閱讀 7751

>description

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

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

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

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

>input

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

>output

如題,第n個標識數字

>sample input

7 3>sample output

10110

>解題思路

枯了雖然有兩個優化沒做但是不知道為什麼只拿了10分傷心子

通過手動模擬可以發現,對於乙個有i

ii個1的j

jj位數,第1位數一定是1,所以其方案數為:c(i

−1,j

−1

)c(i-1,j-1)

c(i−1,

j−1)

,也就是把i-1

個1放進j-1位數裡面

so,我們只要一步步接近n,乙個個找到每個1所在的位置輸出就可以了(因為第1位為一定是1)

>**

#include 

#include

#include

#define ll long long

using namespace std;

ll n, k, t, s, ss, st;

inline ll c

(int a, int b)

int main()

st = t; n -= s;

//st記錄剩下沒有輸出的位數

putchar

('1');

for(k = k -

1; k; k--

)//乙個個找「1」

n -= s;

ll p = st - t -1;

for(

; p; p--

)putchar

('0');

putchar

('1');

st = t;

}for

(ll i =

1; i <= st; i++

)putchar

('0');

return0;

}

組合 奶牛編號

作為乙個神秘的電腦高手,farmer john 用二進位制數字標識他的奶牛。然而,他有點迷信,標識奶牛用的二進位制數字,必須只含有k位 1 1 k 10 當然,每個標識數字的首位必須為 1 fj按遞增的順序,安排標識數字,開始是最小可行的標識數字 由 1 組成的乙個k位數 不幸的是,他沒有記錄下標識...

奶牛的編號

題目 題目描述 有n 1 n 1000 頭奶牛,它們都被標上乙個優先等級編號 1,2或3。用來表示它們喝水時的優先次序,編號為l的最優先,編號為2的其次,編號為3的最後。每天奶牛開始時排成一行,但總是很亂,需要你把它們重新排成編號為1的奶牛在最前面,編號為2的其次,編號為3的奶牛在最後。你能計算出最...

組合數學 求組合數

對於求組合數,要根據所給資料範圍來選擇合適的演算法 這道題中所給的資料範圍適合用打表的方法直接暴力求解 先用4e6的複雜度預處理出所有的情況,再用1e4的複雜度完成詢問即可 include using namespace std const int n 2010 const int mod 1e9 ...