将所填结果输出即可。
小蓝有很多数字卡片,每张卡片上都是数字 0到 9。
小蓝准备用这些卡片来拼一些数,他想从 1开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。
小蓝想知道自己能从 1拼到多少。
例如,当小蓝有 30张卡片,其中 0到 9 各 3张,则小蓝可以拼出 1到10,
但是拼 11时卡片 11 已经只有一张了,不够拼出 11。
现在小蓝手里有 0到 9的卡片各 2021 张,共 20210 张,请问小蓝可以从 1拼到多少?
提示:建议使用计算机编程解决问题。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
代码如下:
''' 暴力解题,即从1开始计算每一张卡片的消耗量,
只要有一张卡片的消耗量超过2021说明当前数字的前一个数字是可以组成的最大的一个数字 '''
count0 = 0
count1 = 0
count2 = 0
count3 = 0
count4 = 0
count5 = 0
count6 = 0
count7 = 0
count8 = 0
count9 = 0
for i in range(1,20000):
count0 += str(i).count('0')
count1 += str(i).count('1')
count2 += str(i).count('2')
count3 += str(i).count('3')
count4 += str(i).count('4')
count5 += str(i).count('5')
count6 += str(i).count('6')
count7 += str(i).count('7')
count8 += str(i).count('8')
count9 += str(i).count('9')
if count0 >2021 or count1 > 2021 or count2 > 2021 or count3 > 2021 or count4 > 2021 or count5 > 2021 or count6 > 2021 or count7 > 2021 or count8 > 2021 or count9 > 2021:
print(i-1)
break
运行结果如下: