小蓝要为一条街的住户制作门牌号。
这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。
小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、7,即需要 1 个字符 0,2 个字符 1,1 个字符 7。
请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?
遍历从1到2020的所有整数。对于每个门牌号 i
,我们无需将其转换为字符串,而是直接分解其各个位上的数字。
获取门牌号 i
的个位数(通过取模运算 % 10
),十位数(将 i
取模100后除以10并向下取整),以及百位数(将 i
除以100并向下取整)。由于我们的范围是1到2020,所以只需要考虑三位数的情况。
对于每一位数,判断它是否等于2:
count
加1。count
加1。count
加1。完成对所有门牌号的遍历后,输出计数器 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'。")
我就想问这样子做代码,是不是有点入门水平,