GESP 2026年3月C++三级(二进制回文串)

202603-1 二进制回文串

题目描述

对于一个正整数 nnn,我们将其转换为不含前导零的二进制表示,如果这个二进制序列从左向右读与从右向左读完全相同,则称该数为二进制回文数。例如,999 的二进制表示为 (1001)2(1001)_2(1001)2,是二进制回文数;121212 的二进制表示为 (1100)2(1100)_2(1100)2,不是二进制回文数。

你的任务是:给定一个正整数 nnn,计算在 111 到 nnn 的范围内二进制回文数的数量。

输入格式

输入一行,包含一个正整数 nnn。

输出格式

输出一行,包含一个数,表示在 111 到 nnn 的范围内二进制回文数的数量。

样例输入 1

复制代码
15

样例输出 1

复制代码
6

提示

【样例解释】

样例 1 中,111 到 151515 范围内 111、333、555、777、999、151515 是二进制回文数。

【数据范围】

1≤n≤1051 \leq n \leq 10^51≤n≤105

解题思路

方法:数位翻转比较法

直接遍历 111 到 nnn 的每个数,将其二进制表示从低位到高位依次取出并重新组合成一个新的数 mmm,如果 mmm 与原数相等,则说明该数的二进制表示是回文的。

核心思想:

  • 将原数的二进制位从低到高依次取出(j%2j\%2j%2)
  • 同时将取出的位按从左到右的顺序重新组合(m=m∗2+j%2m = m*2 + j\%2m=m∗2+j%2)
  • 最终 mmm 就是原数二进制表示的翻转,若 m==im==im==i,则为回文数

代码解析

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

int main() {
    int n, cnt = 0;
    cin >> n;
    
    // 遍历1到n的所有数
    for (int i = 1; i <= n; i++) {
        int j = i, m = 0;
        
        // 将i的二进制位从低到高取出,同时构建翻转后的数m
        while (j) {
            m = m * 2 + j % 2;  // 取出最低位,添加到m的最高位
            j /= 2;             // 移除最低位
        }
        
        // 如果翻转后的数等于原数,说明是二进制回文数
        if (m == i) cnt++;
    }
    
    cout << cnt;
    return 0;
}

样例验证

数字 二进制表示 翻转后的值 是否回文
1 1 1 ✓
2 10 01=1 ✗
3 11 11 ✓
4 100 001=1 ✗
5 101 101 ✓
6 110 011=3 ✗
7 111 111 ✓
8 1000 0001=1 ✗
9 1001 1001 ✓
10 1010 0101=5 ✗
11 1011 1101=13 ✗
12 1100 0011=3 ✗
13 1101 1011=11 ✗
14 1110 0111=7 ✗
15 1111 1111 ✓

结果:共6个二进制回文数(1、3、5、7、9、15)


相关推荐
сокол7 分钟前
【Python-基础-环境搭建】Ubuntu Python 开发环境搭建:编译、pipenv、pyenv、远程连接
开发语言·python·ubuntu
大侠归来2 小时前
C 语言 | 在函数中操作数组
c语言·c++·算法
liangshanbo12152 小时前
JavaScript 面试题:Object.keys() 的返回顺序是无序的吗?
开发语言·javascript·ecmascript
怕浪猫7 小时前
GEO 优化到底是什么?AI时代内容创作者必须懂的新技能
算法·面试·github
朝朝辞暮i8 小时前
C++ 第 23 课:class —— 开始真正进入面向对象
开发语言·c++·算法
Evand J8 小时前
【MATLAB例程】三维RRT+APF避障路径规划与到达角(AOA)定位算法|三维路径优化与定位仿真例程
算法·matlab·路径规划·代码·定位·rrt·aoa
小师兄吃牛肉9 小时前
C语言篇:宏
c语言·开发语言
郑同学的笔记9 小时前
【c++随笔28】strcmp 和 memcmp对比
开发语言·c++
随意起个昵称9 小时前
【背包dp】输出方案路径
c++·动态规划
言乐610 小时前
Python根据无法识别搜索词找出可能输入内容模型
开发语言·python·django·virtualenv·pygame