题目八:特别数的和

文章描述了一个编程问题,要求计算从1到n中所有包含数字2、0、1、9(不包括前导0)的数的和。给定一个上限n,通过遍历并检查每个数的个位和十位是否符合条件,累加满足条件的数字。程序使用Python实现,并给出了示例输入和输出。
摘要由CSDN通过智能技术生成

目录

题目:

分析:

程序:


题目:

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

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

输入格式

共一行,包含一个整数 n。

输出格式

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

数据范围

1≤n≤10000

输入样例:

40

输出样例:

574

分析:

题目中提供的要求只是1-40,这也就限制了数据的规模,即最大就是两位。也就是2、0、1、9只可能出现在个位以及十位上,较好判断。

个位的判断只需要%取余即可,十位的判断只需要int(x/10)取整。(/的结果不是一个整数,如10/3=3.33333,不是3,因此要加个向下取整,取3)

程序:

sum = 0
b = 0
num = []
a = int(input('请输入想要判断的数的上限:'))
for i in range(0,(a+1)):
    if i%10==2 or i%10==0 or i%10==1 or i%10==9:
            sum += i
            b += 1
            num.append(i)
    else:
        if int(i/10)==2 or int(i/10)==1 or int(i/10)==9:
            sum += i
            b += 1
            num.append(i)
print(sum)
print(b)
print(num)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值