#5246. [GESP202603 四级 Scratch] 26. 二进制回文数

    ID: 5246 传统题 30000ms 512MiB 尝试: 0 已通过: 0 上传者: 标签>字符串处理算法编程题算法·三星字符串处理·三星scratch四级

[GESP202603 四级 Scratch] 26. 二进制回文数

二进制回文数 【题目描述】

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

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

1.把这个数不断除以 2,记下每次的余数(0 或 1)

2.一直除到商为 0 为止

3.把得到的余数从下往上读出来,就是二进制数举个例子:把数字 9 转换成二进制9 ÷ 2 = 4 ... 余 14 ÷ 2 = 2 ... 余 02 ÷ 2 = 1 ... 余 01 ÷ 2 = 0 ... 余 1从下往上读余数:1001,所以 9 的二进制是 1001。

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

例如:

  • 数字 9 的二进制是 1001,正着读和倒着读都是 1001,所以 9 是二进制回文数
  • 数字 12 的二进制是 1100,倒着读是 0011,去掉前面的 0 后是 11,和原来的1100 不一样,所以 12 不是二进制回文数默认小猫角色和白色背景,请你帮助小杨编写一个程序,计算从 1 到 n 的所有数字中,有多少个是二进制回文数,并把结果存储在变量 ans 中。

【输入描述】

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

如下图所示:

【输出描述】

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

如下图所示:

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

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

【输入样例】

n = 15

【输出样例】

ans = 6

【输入样例】

n = 25

【输出样例】

ans = 8

注意事项:

1、 变量名的拼写(包括大小写)要和题目完全一致。

2、 输入变量直接赋值即可,无需使用“询问并等待”积木块。

3、 输出结果存放在对应变量中即可,无需使用“说…”或“说…,2 秒”积木块。