一、题目描述:
2023年十四届省赛大学B组真题第一题:2023
请求出在12345678(含)至98765432(含)中,有多少个数中完全不包含2023。
完全不包含2023是指无论将这个数的哪些数位移除都不能得到2023。例如20322175,33220022都完全不包含2023,而20230415,20193213则含有2023(后者取第1,2,6,8个数位)。
二、答案提交:
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
三、解题思路:
1.求有多个数不包含2023,那先求出有多少个数包含2023,拿总数减去范围内包含2023的数的数目。
2.在一定范围内的问题一般用循环解决:本题适合用for循环更加简单一些。
3.如何判断一个数包不包括2023是这道题的重点。
将某个数变为字符串,把2023作为字符串存储或者把2023每位上的数存入列表中,将2023的每位上的数都与字符串的每个字符相比较,即从列表的初始位置开始,下标index为0,比较结果相等,则下标往后移一位即index+1,继续比较下面的数字,直至比较结束(该字符串的元素比较完了结束和该字符串包含2023,不需继续比较),如果是第二种情况,最后一次比较结束后根据前边下标index的值会继续向后移一位为变为4,并以此判断是否退出当前这次循环的条件,并且包含2023数的数量count+1。
4.最后拿循环的总次数减去包含2023的数的数目可得解。
四、代码如下:
my_str = "2023" # 或者my_list = ["2","0","2","3"]
count = 0
for i in range(12345678, 98765432):
index = 0
a = str(i)
for j in a:
if j == my_str[index]:
index += 1
if index == 4:
count += 1
break
print(98765432 - 12345678 + 1 - count) # 拿循环的总次数减去包含2023的数的数目可得解
五、结果输出:
如果您觉得文章写得还不错的话,可以点个赞再走哦!后续会持续更新!