You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

固定长度且含固定数量1的二进制数的序号计算方法问询

固定长度且含固定数量1的二进制数的序号计算方法问询

嘿,我最近卡壳了,想找个公式或者算法来计算固定总位数、固定1的个数的二进制数在升序排列中的序号。

举个具体的例子:我现在看的是所有22位、恰好包含10个1的二进制数,它们按数值从小到大排序的话:

  • 0000000000001111111111₂ → 第1个序号
  • 0000000000010111111111₂ → 第2个序号
  • 0000000000011011111111₂ → 第3个序号
  • ...
  • 0000001011111001101100₂ → 某个中间序号
  • ...
  • 1111111111000000000000₂ → 第646646个序号

我已经能用Java代码生成所有这类数,也知道总数是组合数C(22,10)=646646个。

现在的问题是:给定任意一个符合条件的二进制数,我该怎么计算它对应的序号n(1≤n≤646646)呢?

或者说,有没有现成的算法解决这个问题?我可能只是不知道这个问题的专有名称而已。

备注:内容来源于stack exchange,提问作者jmizv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 11:28:04