在某个给定范围[L, R]的所有整数中,找出有多少个数中包含 2023 。 完全不包含 2023 是指无论将这个数的哪些数位移除都不能得到 2023 。 例如 203221,332200 都完全不包含 2023,而 420235,201323 则包含有 2023 (前者取第2、3、4、5个数位,后者取第 1, 2, 5, 6 个数位) 。
时间: 2024-02-23 22:01:37 浏览: 49
这是一道有趣的数位问题,可以通过枚举法来解决。
我们可以先写一个函数 contains2023,用来判断一个数是否包含 2023。具体的实现方法是将这个数转换为字符串,然后判断这个字符串是否包含 "2023" 子串。
然后,我们从 L 到 R 依次枚举每一个数,判断它是否包含 2023,如果不包含,再判断它是否完全不包含 2023。如果是,则计数器加 1。
具体的实现方法可以参考下面的代码:
```python
def contains2023(n):
return "2023" in str(n)
def completelyNotContains2023(n):
if "2" in str(n):
return False
if "0" in str(n):
return False
if "3" in str(n):
return False
return True
L, R = map(int, input().split())
count = 0
for i in range(L, R+1):
if contains2023(i):
continue
if completelyNotContains2023(i):
count += 1
print(count)
```
输入 L 和 R 表示要在[L, R]范围内查找,程序会输出包含 2023 的数的个数。
注意:本程序采用了较为简单的算法,对于大数据的情况可能会超时。如果需要更高效的算法,请自行查找相关资料。
阅读全文