小蓝有很多数字卡片,每张卡片上都是数字 0 0 到 9 9。 小蓝准备用这些卡片来拼一些数,他想从 1 1 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。 小蓝想知道自己能从 1 1 拼到多少。 例如,当小蓝有 30 30 张卡片,其中 0 0 到 9 9 各 3 3 张,则小蓝可以拼出 1 1 到 10 10, 但是拼 11 11 时卡片 1 1 已经只有一张了,不够拼出 11 11。 现在小蓝手里有 0 0 到 9 9 的卡片各 2021 2021 张,共 20210 20210 张,请问小蓝可以从 1 1 拼到多少?请用c++编写代码
时间: 2023-03-08 22:04:32 浏览: 226
小蓝可以从 1 开始拼到 402,因为他有 2021 张 0-9 的数字卡片,拼出 402 就把所有卡片用完了,代码如下:sum = 0
for i in range(1, 403):
num = str(i)
for j in range(0, 10):
if num.count(str(j)) > 2021:
break
else:
sum += 1
print(sum)
相关问题
小蓝有很多数字卡片,每张卡片上都是数字 0 到 9。 小蓝准备用这些卡片来拼一些数,他想从 1 开始拼出正整数,每拼一个, 就保存起来,卡片就不能用来拼其它数了。
请你帮小蓝计算,他最多能拼出多少个不同的正整数。
例如,如果小蓝有 3 张卡片,上面的数字分别是 1、2、3,那么他最多只能拼出 3 个不同的数,分别是 1、2、3。
再例如,如果小蓝有 4 张卡片,上面的数字分别是 1、2、0、0,那么他最多只能拼出 2 个不同的数,分别是 1 和 20。
提示:可以使用贪心算法。
小蓝有很多数字卡片,每张卡片上都是数字0 到9。 小蓝准备用这些卡片来拼一些数,他想从1 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。 小蓝想知道自己能从1 拼到多少。 例如,当小蓝有30 张卡片,其中0 到9 各3 张,则小蓝可以拼出1 到10,但是拼11 时卡片1 已经只有一张了,不够拼出11。 现在小蓝手里有0 到9 的卡片各2021 张,共20210 张,请问小蓝可以从1拼到多少?
根据题意,小蓝手里有0到9的卡片各2021张,共20210张。我们可以用贪心算法来解决这个问题。
首先,我们可以将数字1到9按照从大到小的顺序依次拼出来。对于每个数字,我们尽可能地使用数量最多的卡片来拼出它。如果某个数字无法拼出来,就说明小蓝无法拼出比它更大的数字了。
具体地,我们可以按照以下步骤来计算小蓝可以拼出的最大数字:
1. 将数字1到9按照从大到小的顺序依次考虑。
2. 对于每个数字i,先计算出小蓝手里有多少张数字i的卡片,记为count_i。
3. 从count_i中取出尽可能多的卡片来拼出数字i。具体地,我们可以计算出数字i需要的卡片数量,记为need_i。如果count_i >= need_i,就可以全部使用;否则只能使用count_i张卡片。
4. 如果在拼出数字i时,发现已经无法拼出比它更大的数字了,就可以停止计算。
5. 如果成功拼出了数字9,就说明小蓝可以拼出所有的正整数,答案为20210。
根据上述算法,我们可以得到小蓝可以拼出的最大数字为987654321。
阅读全文