蓝桥杯-2023(python)

1.问题描述

请求出在 12345678 至 98765432 中,有多少个数中完全不包含 2023 。 完全不包含 2023 是指无论将这个数的哪些数位移除都不能得到 2023 。 例如 20322175,33220022 都完全不包含 2023,而 20230415,20193213 则 含有 2023 (后者取第 1, 2, 6, 8 个数位) 。

2.python实现

        直接暴力枚举即可,可以先得出完全包含‘2023’的个数,再相减得出完全不包含‘2023’的个数(完全包含和完全不包含属于对立事件)。主要利用combinations函数实现,为了缩短运行时间,利用if语句先进行判断其数字是否包含‘2’,‘0’,‘3’这三个数字(其中数字‘2’至少出现两次)。

答案:85959030

from itertools import combinations

ans=0
for i in range(12345678,98765433):
    if str(i).count('2')>=2 and str(i).count('0')!=0 and str(i).count('3')!=0:
        for j in combinations(str(i),4):
            if ''.join(j)=='2023':
                ans+=1
                break
print(98765433-12345678-ans)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值