|
20鱼币
卡片
题目:
小蓝有很多数字卡片,每张卡片上都是数字 0到9
小蓝准备用这些卡片来拼一些数,例如小蓝有 30 张卡片,其中 0到9 各3张,则小蓝可以拼出 1到10,
但是拼11时卡片1已经只有一张了,不够拼出11
现在小蓝手里有 0到9 的卡片各 2021 张,共20210张,请问小蓝可以从 1 拼到多少?
- a = b = c = d = e = f = g = h = i = j = 2021
- # 0到9 卡片的张数都是2021张
- number = 1
- while a > 0 and b > 0 and c > 0 and d > 0 and e > 0 and f > 0 and g > 0 and h > 0 and i > 0 and j > 0:
- a -= str(number).count("0")
- b -= str(number).count("1")
- c -= str(number).count("2")
- d -= str(number).count("3")
- e -= str(number).count("4")
- f -= str(number).count("5")
- g -= str(number).count("6")
- h -= str(number).count("7")
- i -= str(number).count("8")
- j -= str(number).count("9")
- number += 1
- if a <= 0 or b <= 0 or c <= 0 or d <= 0 or e <= 0 or f <= 0 or g <= 0 or h<= 0 or i <= 0 or j <= 0:
- number -= 1
- print(number)
复制代码
感谢大佬
本帖最后由 元豪 于 2023-2-19 18:31 编辑
个人比较喜欢用列表
- u = [2021] * 10
- # 0到9 卡片的张数都是2021张
- o = False
- number = 1
- while sum(u) > 0:
- for i in range(1, 11):
- # print(str(number).count(str(i)))
- u[i - 1] -= str(number).count(str(i))
- if u[i - 1] < 0:
- o = True
- if o:
- break
- number += 1
- number -= 1
- print(number)
复制代码
最后一个if可以去掉 , 因为已经跳出循环表示肯定 <= 0 了
|
最佳答案
查看完整内容
个人比较喜欢用列表
最后一个if可以去掉 , 因为已经跳出循环表示肯定
|