旨在为小朋友们提供全面的学习材料,共同为等级考试做好准备。
添加小助手微信,回复【GESP三级2026.03_二进制回文串】,获取本题源代码。
【提交】
https://www.luogu.com.cn/problem/B4499
【问题描述】
对于一个正整数 ,我们将其转换为不含前导零的二进制表示,如果这个二进制序列从左向右读与从右向左读完全相同,则称该数为二进制回文数。例如, 的二进制表示为 ,是二进制回文数; 的二进制表示为 ,不是二进制回文数。
你的任务是:给定一个正整数 ,计算在 到 的范围内二进制回文数的数量。
【输入描述】
输入一行,包含一个正整数 。
【输出描述】
输出一行,包含一个数,表示在 到 的范围内二进制回文数的数量。
【样例输入1】
15【样例输出1】
6【样例解释】
样例 1 中, 到 范围内 、、、、、 是二进制回文数。
【数据范围】
。
参考程序:
方法一:
"""[GESP202603 三级] 二进制回文串https://www.luogu.com.cn/problem/B4499"""n = int(input())i = 1cnt = 0while i <= n: s = "" j = iwhile j != 0: s = str(j % 2) + s j = j // 2 i += 2if s == s[::-1]: cnt += 1print(cnt)方法二:
"""[GESP202603 三级] 二进制回文串https://www.luogu.com.cn/problem/B4499"""n = int(input())cnt = 0for i in range(1, n + 1): binary = bin(i)[2:] # 获取二进制字符串(去掉 '0b' 前缀)if binary == binary[::-1]: # 判断是否回文 cnt += 1print(cnt)青少年编程竞赛交流
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),添加小助手微信,让他邀请大家进入学习群。进群之后大家可以参与定期组织的21天刷题打卡、等级考试测评、教育部白名单比赛辅导以及青少年编程组队竞赛等活动。
