第十届蓝桥杯java-c组-求和

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)

猜你喜欢

转载自blog.csdn.net/qq_39445165/article/details/114996485