题目描述
小蓝有很多数字卡片,每张卡片上都是数字 0到 9。 小蓝准备用这些卡片来拼一些数,他想从 1开始拼出正整数,每拼一个, 就保存起来,卡片就不能用来拼其它数了。 小蓝想知道自己能从 1 拼到多少。 例如,当小蓝有 30 张卡片,其中 0 到 9 各 3 张,则小蓝可以拼出 1到 10, 但是拼 11 时卡片 11 已经只有一张了,不够拼出 11。 现在小蓝手里有 0 到 9 的卡片各 2021张,共 20210 张,请问小蓝可以从 1 拼到多少?
运行限制
最大运行时间:1s
最大运行内存: 128M
解析
代码
方法一:
a = [2021 for i in range(10)]
def check(x):
while(x > 0):
now = int(x % 10)
if(a[now] > 0):
a[now] -= 1
else:
return 0
x = x // 10
return 1
cnt = 1
while(check(cnt)):
cnt += 1
print(cnt - 1)
方法二:
num = 0
for i in range(1,10000):
num += str(i).count("1")
if num > 2021:
break
print(i-1)