第10448题 程序题
Scratch编程:统计1到n的二进制回文数个数

题目描述

小杨在数学课上学习了二进制数:十进制使用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,正反读一致,是二进制回文数
  • 12的二进制是1100,倒读为0011,去掉前导0后为11,与原内容不同,不是二进制回文数

默认小猫角色与白色背景,请编写程序计算1到n的所有数字中二进制回文数的总个数,结果存储在变量ans中。

输入描述

新建变量n,表示正整数,取值范围:1 ≤ n ≤ 10000,直接赋值即可,无需使用“询问并等待”积木。 输入变量示例:输入变量n示例

输入样例1

n = 15 对应运行界面:n=15运行示例

输入样例2

n = 25 对应运行界面:n=25运行示例

输出描述

新建变量ans,存储1到n之间二进制回文数的个数,无需使用“说…”类积木输出。 输出变量示例:输出变量ans示例

输出样例1

ans = 6(1-15的二进制回文数为1、3、5、7、9、15,共6个)

输出样例2

ans = 8

注意事项

  1. 变量名拼写(含大小写)必须与题目要求完全一致
  2. 无需使用“询问并等待”积木获取输入,直接对变量n赋值即可
  3. 无需使用“说…”类积木输出结果,直接存入变量ans即可