题解 | #数据分类处理#大佬不愧是大佬
数据分类处理
https://www.nowcoder.com/practice/9a763ed59c7243bd8ab706b2da52b7fd
# I->15: 123 456 786 453 46 7 5 3 665 453456 745 456 786 453 123
# R->5: 6 3 6 3 0 排序+去重后:0 3 6
# (1)先输出R<i>;3\3
# (2)再输出满足条件的I的个数;6\
# (3)然后输出满足条件的I在I序列中的位置索引(从0开始);0
# (4)最后再输出I。123
while True:
try:
a = input().split()[1:]
# 去掉第一个,再去重,再转为int,再排序,再转为列表
b = map(str, sorted(map(int, set(input().split()[1:]))))
totalNum = 0 # 每个R(i)符合的I的个数
res = ""
for num in b:
singleRes, count = "", 0
# enumerate() 是一个 Python 内置函数,
# 用于将一个可遍历的数据对象(如列表、元组或字符串)
# 组合为一个索引序列,同时列出数据和数据下标,
# 一般用在 for 循环当中。
# 这个循环是逐个遍历第一行的数据
for i, v in enumerate(a): # i为下标,v为对应的数字,默认下标从0开始
if num in v:
# singleRes是每个R(i)值得到的结果
singleRes += (
str(i) + " " + v + " "
) # 输出要求是:每找到一个,下标和数字一起输出,singleRes可以更新
totalNum += 2 # 后续整数序列的个数:因为加了下标和I值
count += 1 # 计数:符合条件的I值的个数
if count: # count已经统计完第一个个R(i)的
singleRes = num + " " + str(count) + " " + singleRes
totalNum += 2 # 因为加了num和count
res += singleRes
print((str(totalNum) + " " + res).rstrip())
except:
break
