• 门牌制作-蓝桥杯?-Lua 中文代码解题第3题


    门牌制作-蓝桥杯?-Lua 中文代码解题第3题

    小蓝要为一条街的住户制作门牌号。

    这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。

    小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、7,即需要 1 个字符 0,2 个字符 1,1 个字符 7。

    请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?

    解题思路: 

    1. 初始化一个变量 count 作为计数器,用于统计数字"2"出现的总次数,初始值设为0。

    2. 遍历从1到2020的所有整数。对于每个门牌号 i,我们无需将其转换为字符串,而是直接分解其各个位上的数字。

    3. 获取门牌号 i 的个位数(通过取模运算 % 10),十位数(将 i 取模100后除以10并向下取整),以及百位数(将 i 除以100并向下取整)。由于我们的范围是1到2020,所以只需要考虑三位数的情况。

    4. 对于每一位数,判断它是否等于2:

      • 如果个位数等于2,则将计数器 count 加1。
      • 如果十位数等于2,则同样将计数器 count 加1。
      • 如果门牌号大于等于100并且百位数等于2,则再次将计数器 count 加1。
    5. 完成对所有门牌号的遍历后,输出计数器 count 的值,即为制作1到2020号门牌所需的字符"2"总数。

    中文代码 -- 无注释版

    1. 局部 门牌2 = 0
    2. 因为 i = 1, 2020
    3. 局部 个位数 = i % 10
    4. 局部 十位数 = 数.下整((i % 100) / 10)
    5. 局部 百位数 = 数.下整(i / 100)
    6. 门牌2 = 门牌2 + (个位数 == 210)
    7. 门牌2 = 门牌2 + (十位数 == 210)
    8. 如果 i >= 100
    9. 门牌2 = 门牌2 + (百位数 == 210)
    10. 结束
    11. 结束
    12. 输出("制作所有的1到2020号门牌,总共需要"..门牌2.."个字符'2'。")
    中文代码 -- 带注释的如下:
    1. -- 门牌制作-蓝桥杯.lua
    2. -- 此脚本用于统计从12020的所有整数中,门牌号中包含字符'2'的总个数。
    3. -- 初始化计数器
    4. 局部 门牌2 = 0
    5. -- 遍历从12020的所有整数
    6. 因为 i = 1, 2020
    7. -- 分解门牌号为各个位数并统计"2"
    8. 局部 个位数 = i % 10
    9. 局部 十位数 = 数.下整((i % 100) / 10)
    10. 局部 百位数 = 数.下整(i / 100)
    11. -- 直接统计每个位置的"2"
    12. 门牌2 = 门牌2 + (个位数 == 210)
    13. 门牌2 = 门牌2 + (十位数 == 210)
    14. 如果 i >= 100
    15. 门牌2 = 门牌2 + (百位数 == 210)
    16. 结束
    17. 结束
    18. -- 输出统计结果
    19. 输出("制作所有的1到2020号门牌,总共需要"..门牌2.."个字符'2'。")
    这段代码运行后将会输出:制作所有的1到2020号门牌,总共需要503个字符'2'。

    我就想问这样子做代码,是不是有点入门水平,

    即可以少做中文注释,大家也能看得懂。

  • 相关阅读:
    强大的Docker入门知识
    SpringMVC学习
    Linux下安装cx_Oracle,连接oracle数据库
    【Linux】VM及WindowsServer安装
    【Torch】torch.load( )系列语句解读解读,易学易用
    c语言:解决数组中数组缺少单个的元素的问题
    pytorch的mask-rcnn的模型参数解释
    一文进入Flink CDC 的世界
    Windows原理深入学习系列-强制完整性检查
    ElasticSearch_DSL 使用方法合集(持续更新中......)
  • 原文地址:https://blog.csdn.net/funsion/article/details/136767784