目录
题目:
小明对数位中含有 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)