门牌制作-蓝桥杯?-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"总数。

中文代码 -- 无注释版
复制代码
局部 门牌2 = 0

因为 i = 1, 2020 做
    局部 个位数 = i % 10
    局部 十位数 = 数.下整((i % 100) / 10)
    局部 百位数 = 数.下整(i / 100)

    门牌2 = 门牌2 + (个位数 == 2 与 1 或 0)
    门牌2 = 门牌2 + (十位数 == 2 与 1 或 0)
    如果 i >= 100 即
        门牌2 = 门牌2 + (百位数 == 2 与 1 或 0)
    结束
结束

输出("制作所有的1到2020号门牌,总共需要"..门牌2.."个字符'2'。")
中文代码 -- 带注释的如下:
复制代码
-- 门牌制作-蓝桥杯.lua
-- 此脚本用于统计从1到2020的所有整数中,门牌号中包含字符'2'的总个数。

-- 初始化计数器
局部 门牌2 = 0

-- 遍历从1到2020的所有整数
因为 i = 1, 2020 做
    -- 分解门牌号为各个位数并统计"2"
    局部 个位数 = i % 10
    局部 十位数 = 数.下整((i % 100) / 10)
    局部 百位数 = 数.下整(i / 100)

    -- 直接统计每个位置的"2"
    门牌2 = 门牌2 + (个位数 == 2 与 1 或 0)
    门牌2 = 门牌2 + (十位数 == 2 与 1 或 0)
    如果 i >= 100 即
        门牌2 = 门牌2 + (百位数 == 2 与 1 或 0)
    结束
结束

-- 输出统计结果
输出("制作所有的1到2020号门牌,总共需要"..门牌2.."个字符'2'。")
这段代码运行后将会输出:制作所有的1到2020号门牌,总共需要503个字符'2'。

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

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

相关推荐
AlenTech6 小时前
207. 课程表 - 力扣(LeetCode)
算法·leetcode·职场和发展
练习时长一年7 小时前
LeetCode热题100(杨辉三角)
算法·leetcode·职场和发展
_OP_CHEN10 小时前
【算法基础篇】(四十五)裴蜀定理与扩展欧几里得算法:从不定方程到数论万能钥匙
算法·蓝桥杯·数论·算法竞赛·裴蜀定理·扩展欧几里得算法·acm/icpc
我命由我1234511 小时前
Photoshop - Photoshop 工具栏(58)锐化工具
学习·ui·职场和发展·求职招聘·职场发展·学习方法·photoshop
踩坑记录11 小时前
leetcode hot100 438. 找到字符串中所有字母异位词 滑动窗口 medium
leetcode·职场和发展
YuTaoShao11 小时前
【LeetCode 每日一题】1458. 两个子序列的最大点积——(解法三)状态压缩
算法·leetcode·职场和发展
橘颂TA12 小时前
【剑斩OFFER】算法的暴力美学——leetCode 946 题:验证栈序列
c++·算法·leetcode·职场和发展·结构与算法
wen__xvn12 小时前
力扣第 484 场周赛
算法·leetcode·职场和发展
YuTaoShao12 小时前
【LeetCode 每日一题】865. 具有所有最深节点的最小子树——(解法一)自顶向下
算法·leetcode·职场和发展
2301_8008951012 小时前
hh的蓝桥杯每日一题--拔河
职场和发展·蓝桥杯