3821:二进制中恰好K个1的第N小整数(2069 分)
目录
题目
给你两个正整数 n 和 k。
返回一个整数,表示其二进制表示中 恰好 包含 k 个 1 的第 n 小的正整数。题目保证答案 严格小于 250。
示例 1:
输入: n = 4, k = 2
输出: 9
解释:
二进制表示中恰好包含 k = 2 个 1 的前 4 个正整数分别是:
3 = 1125 = 10126 = 11029 = 10012
示例 2:
输入: n = 3, k = 1
输出: 4
解释:
二进制表示中恰好包含 k = 1 个 1 的前 3 个正整数分别是:
1 = 122 = 1024 = 1002
提示:
1 <= n <= 2501 <= k <= 50- 答案严格小于
250。
分析
- 试填法,从高到低确定二进制每一位
- 假如第 i 位填 0,要在剩下的 i 个位置分配 k 个 1,有 c=comb(i,k) 种
- 若 c<n,说明不够,第 i 位应该填 1,然后 n 减少 c,k 减少 1
- 否则第 i 位就是 0,n 和 k 不变
解答
|
|
3 ms