小A对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 0),在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。 请问,在 1 到n 中,所有这样的数的和是多少? 输入格式: 输入一行包含一个整数n 输出格式: 输出一行,包含一个整数,表示满足条件的数的和。 输入样例: 在这里给出一组输入。例如: 40 输出样例: 在这里给出相应的输出。例如: 574
时间: 2023-08-31 09:35:10 浏览: 60
以下是 Python3 代码实现:
```python
n = int(input())
res = 0
for i in range(1, n + 1):
if '2' in str(i) or '0' in str(i) or '1' in str(i) or '9' in str(i):
res += i
print(res)
```
思路解析:
本题的思路比较简单,我们只需要遍历区间 $[1, n]$ 中的每个数,判断其是否包含数字 $2, 0, 1, 9$,如果包含,则将其累加到结果中即可。
具体实现时,我们可以使用一个循环遍历区间 $[1, n]$,每次判断当前数是否包含数字 $2, 0, 1, 9$,如果包含,则将其累加到结果中。判断一个数是否包含这些数字,我们可以将其转换为字符串,然后使用 `in` 关键字判断即可。
最后,输出累加结果即为所求。
相关问题
小A对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 0),在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。 请问,在 1 到n 中,所有这样的数的和是多少?
我们可以遍历从 1 到 n 的每一个数字,判断其是否包含数字 2、0、1、9,如果包含则将其加入到总和中。最后返回总和即可。
以下是Python代码实现:
```python
def is_interesting_number(num):
while num > 0:
digit = num % 10
if digit in [0, 1, 2, 9]:
return True
num //= 10
return False
def sum_interesting_numbers(n):
total = 0
for i in range(1, n + 1):
if is_interesting_number(i):
total += i
return total
if __name__ == '__main__':
n = int(input("请输入一个正整数 n: "))
print("1 到 {} 中所有数位中含有 2、0、1、9 的数字之和为:{}".format(n, sum_interesting_numbers(n)))
```
输入一个数 n 后,程序会输出从 1 到 n 中所有数位中含有 2、0、1、9 的数字之和。
小A对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 0),在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。 请问,在 1 到n 中,所有这样的数的和是多少?
我们可以通过枚举每个数位,来确定每个数是否符合条件。具体步骤如下:
1. 将 n 转化为字符串,方便枚举每个数位。
2. 枚举每个数位,判断当前数位是否为 0、1、2、9 中的一个,若是则继续判断下一位,否则跳出循环。
3. 若当前数符合条件,则将其加入答案中。
4. 循环结束后,答案即为所有符合条件的数的和。
下面是具体的 Python 代码实现:
```python
n = 40
ans = 0
for i in range(1, n+1):
s = str(i)
flag = True
for j in range(len(s)):
if s[j] not in ['0', '1', '2', '9']:
flag = False
break
if flag:
ans += i
print(ans)
```
根据上述代码,当 n = 40 时,所有符合条件的数的和为 574。