返回首页 返回题库

二进制回文串

C++ 简单 GESP三级真题 #进制转换#回文判断

题目描述

题面描述

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

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

输入格式

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

输出格式

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

样例1

输入:

15

输出:

6

样例2

输入:

6

输出:

3

样例解释

样例1中,1到15范围内1、3、5、7、9、15是二进制回文数。

数据范围

1 ≤ n ≤ 105。


时间限制

1.0 s

内存限制

512.0 MB

💡 查看提示(先自己想一想再看)
本题考察十进制转二进制的方法、回文数的判断以及循环统计。可将十进制数的每一位二进制数存入数组,再通过首尾对应位置的元素对比判断是否为回文数,注意数组大小要足够容纳转换后的二进制位。
⚙ 开始做这道题 0 人做过 · 2 收藏 · 16 浏览

讨论(0)