学习Python从娃娃抓起!记录下蓝桥杯Python学习和备考过程中的题目,记录每一个瞬间。
附上汇总贴:小学生蓝桥杯Python闯关 | 汇总_COCOgsta的博客-CSDN博客
【题目描述】
这天小明正在学数数。他突然发现有些正整数的形状像一座“山”,如123565321、145541,它们左右对称(回文)且数位上的数字先单调不减,后单调不增。小明数了很久也没有数完,他想让你告诉他在[2022, 2022222022]中有多少个数的形状像一座“山”。
【代码详解】
ans = 0
for i in range(20,20223): #(1)回文串长度为偶数,右半边是左半边的翻转
flag = 1
s = str(i)
for i in range(0,len(s)-1): #判断左半边的单调性
if s[i]>s[i+1]: #非单调不减
flag = 0 # = 0:不合法
break
if flag == 1: ans += 1 #得到了左半边,可以构造一个“山”数
for i in range(11,10000): #[11,9999]。(2)回文串长度为奇数,中间数不小于左右两边
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[i+1])
print(ans) #输出3138
复制代码
【运行结果】
3138