蓝桥杯python——卡片

小蓝的卡片 —— (小蓝卡片的真多)

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小蓝有很多数字卡片,每张卡片上都是数字 0 到 9。 小蓝准备用这些卡片来拼一些数,他想从 1 开始拼出正整数,每拼一个,
就保存起来,卡片就不能用来拼其它数了。 小蓝想知道自己能从 1 拼到多少。 例如,当小蓝有 30 张卡片,其中 0 到 9 各
33 张,则小蓝可以拼出 11 到 10, 但是拼 11 时卡片 1 已经只有一张了,不够拼出 11。 现在小蓝手里有 0
到 9 的卡片各 2021 张,共 20210 张,请问小蓝可以从 1 拼到多少?

分析

把每一个数值拆开后添加进数组内,例如:将456变为4,5,6。在每一次添加完后统计数组中0到9的总数是多少,如果有某个数的数量大于或等于2021时,停止添加,同时输出当前的数值为多少。
如果最后一次添加数值时,超过了规定的2021,例如:当1为2020时,添加的数值为2111,那么1的数值就会变为2023,超过了2021,则需要将当前数值减1后再做输出,但本题恰好为2021,所以不添加判断,输出的数值也是正确的

nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
num_s = []
g = []
for i in range(1, 10000):
    g = list(str(i))   #将数值拆分开变为单独的列表添加进列表
    for j in g:
        num_s.append(int(j))   #将单独的列表中的数值添加进统一的大列表
        for a in nums:   #循环统计0到9在列表中的数值
            if(num_s.count(a) = 2021):   #得到答案时输出结果
                print(i)
                exit()
            if (num_s.count(a) > 2021):   #数值大于2021时的操作
                print(i-1)
                exit()
            else:
                pass
结果为

输出结果
为了验证我们是否正确输出了数值,再添加一个输出

nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
num_s = []
g = []
for i in range(1, 10000):
    g = list(str(i))   #将数值拆分开变为单独的列表添加进列表
    for j in g:
        num_s.append(int(j))   #将单独的列表中的数值添加进统一的大列表
        for a in nums:   #循环统计0到9在列表中的数值
            if(num_s.count(a) = 2021):   #得到答案时输出结果
                print(i)
                
                #新添加的内容用于分析
                print("分析各个数值")
                for lll in nums:
                    print(lll, ":", end='')
                    print(num_s.count(lll))
                    
                exit()
            if (num_s.count(a) > 2021):   #数值大于2021时的操作
                print(i-1)
                exit()
            else:
                pass
可以得到以下结果

在这里插入图片描述
得到结果:当数字为3181时,共使用了2021张数值是1的卡片,因此答案为 : 3181
方法比较简单,但是在数组上的大量操作将会此代码在云课中的代码提交中超时,但这题只要提交正确答案即可

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值