1. 问题描述:
小明对数位中含有 2、0、1、9 的数字很感兴趣,在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。 请问,在 1 到 2019 中,所有这样的数的和是多少?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分
2. 思路分析:
分析题目可以知道我们可以在1-2019的范围内循环,判断当前循环的数字是否包含2、0、1、9这样的数字,使用一个循环除10取余即可获取当前遍历数字每一个位置上的数字,如果存在那么累加当前遍历的数字,主要是枚举整个过程(可以先验证一下1-40范围内的数字和是否正确)
3. 代码如下:
def solve(n: int):
num = n
# 依次获取当前数字各个位置上的数字
while n > 0:
t = n % 10
if t == 2 or t == 0 or t == 1 or t == 9: return num
n //= 10
return 0
if __name__ == '__main__':
res = 0
for i in range(1, 2019):
res += solve(i)
print(res)