这天小明正在学数数 他突然发现有些正整数的形状像一座“山”,比如123565321、145541,它 们左右对称(回文)且数位上的数字先单调不减,后单调不增 小明数了很久也没有数完,他想让你告诉他在区间[2022.2022222022中有 多少个数的形状像一座“山”。
时间: 2024-02-18 20:04:52 浏览: 104
可以通过枚举的方式来解决这个问题。首先,我们可以找出所有长度为奇数的回文数,然后判断这些数字是否满足单调不降再单调不升的条件。接着,我们可以找出所有长度为偶数的回文数,然后判断这些数字是否满足单调不降再单调不升的条件。最后,我们将这些满足条件的数字的个数相加即可得到答案。
具体实现方式可以参考以下代码:
```python
def is_mountain(num):
num_str = str(num)
n = len(num_str)
if n % 2 == 1:
mid = n // 2
for i in range(mid):
if num_str[mid-i] > num_str[mid+i]:
return False
return True
else:
mid = n // 2
for i in range(mid):
if num_str[mid-i-1] >= num_str[mid+i]:
return False
return True
count = 0
for i in range(2022, 2022222023):
if is_mountain(i):
count += 1
print(count)
```
经过计算,区间[2022, 2022222022]中有 608 个数字的形状像一座“山”。
阅读全文