橡皮泥士兵大小调整:让你的作品更有个性
小明准备和小伙伴们展示他捏出来的'超酷'的橡皮泥士兵。在展示之前,小明发现有些橡皮泥士兵大小十分相似甚至相同,这让小明感觉不是很'蛋',因为小明想要他的橡皮泥作品都有自己的风格,即使是大小也要有区别。小明的n个橡皮泥士兵的大小分别为a1,2..,a,小明可以通过给某个士兵加一单位皮泥来使得其大小增加一单位,小明想知道如果他想要让所有的稳皮泥士兵大小都不相同,至少需要一共加多少单位稳皮泥。
第一行1个整数n,表示小明的橡皮泥士兵数量. 第二行n个整数a z...ap,分别表示小明的橡皮泥上兵的大小
对于100%的数据,1≤n≤50000, 1≤ai≤100000
解题思路:
首先,我们需要统计每个橡皮泥士兵的数量,然后再计算需要加多少单位皮泥才能使得所有士兵的大小都不相同。
具体步骤如下:
- 创建一个字典,用于记录每个士兵的数量。
- 遍历输入的士兵大小列表,对于每个士兵大小,将其作为字典的键,如果该键已存在,则将对应的值加1;如果该键不存在,则将其添加到字典中,并将值设置为1。
- 统计所有士兵的数量,即字典中所有值的总和。
- 如果士兵的数量等于士兵大小的种类数(即字典的键的个数),说明所有士兵的大小都不相同,直接输出0。
- 如果士兵的数量小于士兵大小的种类数,说明有些士兵的大小是相同的,需要进行调整。计算需要加多少单位皮泥,即为士兵数量减去士兵大小的种类数。
代码实现如下:
n = int(input())
sizes = list(map(int, input().split()))
count_dict = {}
for size in sizes:
if size in count_dict:
count_dict[size] += 1
else:
count_dict[size] = 1
total_count = sum(count_dict.values())
num_types = len(count_dict.keys())
if total_count == num_types:
print(0)
else:
print(total_count - num_types)
原文地址: https://www.cveoy.top/t/topic/qCNQ 著作权归作者所有。请勿转载和采集!