蓝桥杯python每日一练

一、题目描述:

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的数的数目可得解

 五、结果输出:

 

如果您觉得文章写得还不错的话,可以点个赞再走哦!后续会持续更新!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂程序员花椒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值