题解:蓝桥云课 191 特别数的和

【题目来源】

蓝桥云课:1.特别数的和 - 蓝桥云课

【题目描述】

小明对数位中含有 \(2\)\(0\)\(1\)\(9\) 的数字很感兴趣(不包括前导\(0\)),在 \(1\)\(40\) 中这样的数包括 \(1\)\(2\)\(9\)\(10\)\(32\)\(39\)\(40\),共 \(28\) 个,他们的和是 \(574\)

请问,在 \(1\)\(n\) 中,所有这样的数的和是多少?

【输入】

输入格式:输入一行包含两个整数 \(n(1≤n≤10^4)\)

【输出】

输出一行,包含一个整数,表示满足条件的数的和。

【输入样例】

40

【输出样例】

574

【算法标签】

《蓝桥 191 特别数的和》 #2019# #暴力# #枚举# #省赛#

【解题思路】

image

【代码详解】

n = int(input())  # 输入n
sumn = 0  # 定义统计和
for i in range(1, n+1):  # 遍历1到n
    flag=0  # 定义标记位
    num = i  # 记录num
    while num>0:  # 进行数位拆分
        tmp = num%10
        if tmp in [0,1,2,9]:  # 任一位上的数是0或1或2或9
            flag=1  # 修改标记位
        num = num//10
    if flag==1:  # 只要flag标记为1
        sumn += i  # 就将这个数进行统计
print(sumn)  # 打印和

【运行结果】

40
574
posted @ 2026-03-04 10:13  团爸讲算法  阅读(4)  评论(0)    收藏  举报