>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 ...