2. 小球投盒 python
小红一共有 n个盒子,标号为 1 到 n,小红向盒子里放入小球 m次,每次进行以下两个操作中的一个:
- 向编号为 x的盒子里放入一个小球;
- 向除了编号为x 的其他 n−1 盒子里放入一个小球。
小红想知道,第几次操作之后,所有盒子里至少都有一个小球,如果一直无法达到这个目标,输出 −1。
参考实现:
https://www.zhihu.com/question/617981690/answer/3211280635
# 输入的n, m n, m = map(int, input().split()) # 使用集合存储整数集合 integer_set = set(range(1, n+1)) # 循环计数变量 i = 1 while i <= m: query = list(map(int, input().split())) if query[0] == 1: # 如果输入为 1,移除下一个输入的整数 integer_set.discard(query[1]) # 如果集合为空,退出循环 if not integer_set: break else: # 否则,读取下一个输入的整数 x = query[1] # 如果集合中不包含 x,退出循环 if x not in integer_set: break # 否则,重置集合并添加 x integer_set = {x} i += 1 # 输出结果,如果 i 大于 m,输出 -1,否则输出 i print(-1 if i > m else i)