[NOIP2006 普及组] 明明的随机数
题目描述
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 N N N 个 1 1 1 到 1000 1000 1000 之间的随机整数 ( N ≤ 100 ) (N\leq100) (N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
输入格式
输入有两行,第 1 1 1 行为 1 1 1 个正整数,表示所生成的随机数的个数 N N N。
第 2 2 2 行有 N N N 个用空格隔开的正整数,为所产生的随机数。
输出格式
输出也是两行,第 1 1 1 行为 1 1 1 个正整数 M M M,表示不相同的随机数的个数。
第 2 2 2 行为 M M M 个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
样例 #1
样例输入 #1
10
20 40 32 67 40 20 89 300 400 15
样例输出 #1
8
15 20 32 40 67 89 300 400
提示
NOIP 2006 普及组 第一题
n=int(input())
suijishu=input().split()
suijishu=list(set(suijishu))
print(len(suijishu))
suijishu_new=[int(item) for item in suijishu]
suijishu_new.sort()
for item in suijishu_new:print(item,end=" ")pass
刚接触python,以前都用c写,一开始用for循环遍历再判断,如果列表中的这个元素大于一就移除,但是过不了样例,当输入多个相同数据的时候无法删除干净,不明白怎么回事,错误代码如下
n=int(input())
suijishu=input().split()
for item in suijishu:if suijishu.count(item)>1:suijishu.remove(item)passpass
print(len(suijishu))
suijishu_new=[int(item) for item in suijishu]
suijishu_new.sort()
for item in suijishu_new:print(item,end=" ")pass
最后想起之前用过的set容器,有自动排序和删除重复元素的功能,搜了下类型强制转换,最后过了,题目就是个简单的查重排序问题,但是对于python的语句很不理解,所以挺吃力的