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

统计1到n中十进制仅含0和1的数字个数的高效解法咨询

1~n范围内仅含0和1的十进制数字计数高性能实现方案

方案思路

所有仅由0和1组成的十进制数,等价于把正整数的二进制表示直接当做十进制数值读取的结果,这类数字最多有10位(因为n≤10^9),总共有不超过1023个,直接遍历所有可能的这类数字判断是否≤n即可,性能远高于暴力遍历1到n的实现。

实现代码

#include <iostream>
using namespace std;

int main() {
    int n, count = 0;
    cin >> n;
    // 最多遍历1023次,完全满足性能要求
    for (int i = 1; i < 1024; i++) {
        long long num = 0;
        int temp = i;
        while (temp) {
            num = num * 10 + (temp & 1);
            temp >>= 1;
        }
        if (num <= n) {
            count++;
        } else {
            // 生成的数字按从小到大排列,超过n直接终止循环
            break;
        }
    }
    cout << count << endl;
    return 0;
}

验证结果

  • 输入101:输出5,符合示例要求
  • 输入13:输出3,符合示例要求

内容的提问来源于stack exchange,提问作者Ali Nazari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:27:00