第42942题 程序题
二进制回文数

图片

图片

【题目描述】

小杨在数学课上学习了有趣的二进制数。十进制数是我们平时用的0-9数字,而二进制数只用0和1两个数字表示。每个十进制数都可以转换成二进制数。

十进制转二进制的方法(短除法):

  1. 把这个数不断除以2,记下每次的余数(0或1)
  2. 一直除到商为0为止
  3. 把得到的余数从下往上读出来,就是二进制数

举个数子:把数字9转换成二进制

9 ÷ 2 = 4 ... 余1
4 ÷ 2 = 2 ... 余0
2 ÷ 2 = 1 ... 余0
1 ÷ 2 = 0 ... 余1

从下往上读余数:1001,所以9的二进制是1001。

小杨发现有些数的二进制表示很特别:从左向右读和从右向左读是一样的!这样的数叫做"二进制回文数"。

例如:

  • 数字9的二进制是1001,正着读和倒着读都是1001,所以9是二进制回文数
  • 数字12的二进制是1100,倒着读是0011,去掉前面的0后是11,和原来的1100不一样,所以12不是二进制回文数

默认小猫角色和白色背景,请你帮助小杨编写一个程序,计算从1到n的所有数字中,有多少个是二进制回文数,并把结果存储在变量ans中。

【输入描述】

新建变量“n”,表示一个正整数($1 \le n \le 10000$)。

如下如所示:

图片

【输出描述】

新建变量“ans”,用于存储最后的结果,表示1到n之间二进制回文数的个数。

如下如所示:

图片

【样例解释】

在1到15之间,二进制回文数有:

  • 1(二进制1)
  • 3(二进制11)
  • 5(二进制101)
  • 7(二进制111)
  • 9(二进制1001)
  • 15(二进制1111)

共6个。

【样例1】

输入:

n = 15

输出:

ans = 6

【样例2】

输入:

n = 25

输出:

ans = 8

【注意事项】

  1. 变量名的拼写(包括大小写)要和题目完全一致。
  2. 输入变量直接赋值即可,无需使用“询问并等待”积木块。
  3. 输出结果存放在对应变量中即可,无需使用“说…”或“说…,2秒”积木块。
{{ option.label }}
子题{{ index + 1 }} {{ child.type_label }}
{{ option.label }}
✓ 正确 ◐ 部分正确 ✗ 错误
编辑模式
程序运行统计
暂无判题统计
知识点:
提交{{ questionInfo.stats ? questionInfo.stats.submit_count : 0 }}次 正确率{{ statsAccuracy }}%
答案解析