zoukankan      html  css  js  c++  java
  • 【9201】&&【a201】明明的随机数

    Time Limit: 10 second
    Memory Limit: 2 MB

    问题描述
    明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。

    Input

    输入第一行为一个正整数n,表示所生成的随机数的个数n。第二行有n个用空格隔开的正整数,为所产生的随机数。

    Output

    第一行为1个正整数m,表示不相同的随机数的个数。第二行为m个用空格隔开的正整数,(包括最后一个数后也加空格)为从小到大排好序的不相同的随机数 (最后换行结束)

    Sample Input

    10
    20 40 32 67 40 20 89 300 400 15
    

    Sample Output

    8
    15 20 32 40 67 89 300 400
    
    

    【题解】

    随机整数的范围是1-1000,可以用计数排序来,a[1001]的数组就能搞定。bool数组。遇到一个数字就改为true,最后for 1 1000输出true的数字即可。

    【代码】

    #include <cstdio>
    
    const int MAXN = 1000+10;
    
    int n,number=0;
    bool a[MAXN];
    
    void input_data()
    {
    	scanf("%d",&n);	 //输入n个数字 
    	for (int i=1;i<=n;i++)
    		{
    			int t;
    			scanf("%d",&t);
    			if (!a[t]) number ++; //number用于统计最后出现的不重复数字的总个数 最后没用到。 
    			a[t] = true;	
    		}
    }
    
    void output_ans()
    {
    	printf("%d
    ",number);
    	for (int i = 1; i <= 1000; i ++)
    		if (a[i]) printf("%d ",i); //直接输出了。 
    	printf("
    ");	
    }
    
    int main()
    {
    	input_data();
    	output_ans();
    	return 0;	
    }
    


     

  • 相关阅读:
    Java语言基础(3)
    Java语言基础(2)
    Java语言基础(1)
    标准C语言(13)
    标准C语言(12)
    标准C语言(11)
    标准C语言(10)
    IDEA 学习笔记之 Console显示日志大小
    Java 学习笔记之 线程sleep方法
    Java 学习笔记之 线程isAlive方法
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7632507.html
Copyright © 2011-2022 走看看