题目:(注意:因为本题是蓝桥杯填空题所以用Python解答更加方便)
这天小明正在学数数。他突然发现有些整数的形状像一搓“山”,比如说123565321/145541,它们左右对称(回文)且数位上的数字先单调不减,后单调不增。
小明数了很久也没有数完,他想让你告诉他在区间[2022,2022222202]中有多少个数的形状像一座“山”。
思路:
因为数字像一座山,所以我们只看一半,讨论一半为偶数和奇数的时候的范围和情况,然后再判断他的单调性
ans=0
for i in range(20,20223):#为偶数时,范围是[20,20222]
flag=1#判断字符
s=str(i)#放在字符串中好比较每个数的大小
for i in range(0,len(s)-1):
if s[i]>s[i+1]:#确保单调增
flag=0
break
if flag==1: ans+=1
for i in range(11,10000):#为奇数时,range区间是左开右闭的
flag=1
s=str(i)
for i in range(0,len(s)-1):
if s[i]>s[i+1]:#确保单调增
flag=0
break
if flag==1:
ans+=10-int(s[len(s)-1])#比如左边数为12,中间数就可能是2,3,4,5,6,7,8,9,也就是10-2
print(ans)