#szsc3a. 运动会的号码布

    ID: 9372 传统题 30000ms 512MiB 尝试: 0 已通过: 0 上传者: 标签>输入与输出复杂的嵌套结构复杂的逻辑判断数据运算编程题复杂的逻辑判断·三星复杂的嵌套结构·二星输入与输出·三星数据运算·三星scratch三级

运动会的号码布

学校运动会就要开始了,小杨负责发放号码布。这批号码布上印着从整数 L 到整数 R(包括 L 和 R)的连续编号。

小杨把同时满足下面两个条件的编号叫作“特别号码”:

(1)这个编号各个数位上的数字之和是 5 的倍数;

(2)这个编号的各个数位上至少有一个数字是 8。

例如 78,各数位之和 7+8=15 是 5 的倍数,数位上又有 8,所以 78 是特别号码;85 数位上虽然有 8,但 8+5=13 不是 5 的倍数;55 的 5+5=10 是 5 的倍数,数位上却没有 8——后面这两个都不是特别号码。

默认小猫角色和白色背景,编写程序数一数从 L 到 R 之间(包括 L 和 R)一共有多少个特别号码。

样例舞台效果如下图:

运动会号码布舞台效果

输入描述

新建变量“L”,表示编号的起点。

新建变量“R”,表示编号的终点。

数据范围:1≤L≤R≤5000。

输出描述

新建变量“ans”,表示从 L 到 R 之间(包括 L 和 R)特别号码的个数。

编程提示

  1. 用一层循环从 L 数到 R,把每个编号都检查一遍;再用一层循环把当前这个编号逐位拆开:反复取它除以 10 的余数得到个位,然后把它除以 10 再向下取整,直到变成 0。
  2. 拆位的时候,一边把各位数字累加成“数位和”,一边记下有没有出现过数字 8。两个条件同时成立,才把“ans”增加 1。
  3. 变量名的拼写(包括大小写)要和题目完全一致。
  4. 输入变量直接赋值即可,无需使用“询问并等待”积木块。
  5. 输出结果存放在变量“ans”中即可,无需使用“说…”或“说…,2 秒”积木块。

输入样例

L = 1

R = 100

输出样例

ans = 4

输入样例

L = 100

R = 300

输出样例

ans = 8

样例解释

第一组样例中,1 到 100 之间只有 28(2+8=10)、78(7+8=15)、82(8+2=10)、87(8+7=15)这 4 个编号同时满足两个条件,所以 ans 是 4。

第二组样例中,100 到 300 之间符合条件的编号是 118、168、181、186、208、258、280、285,一共 8 个,所以 ans 是 8。