首页 > 其他分享 >1107: ZN的随机数

1107: ZN的随机数

时间:2023-04-08 22:35:33浏览次数:46  
标签:ZN 排序 int 1107 num 随机数 orgroup

题目描述

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

输入格式

输入数据有多组,每组测试数据有 2 行,第 1 行为 1 个正整数,表示所生成的随机数的个数:N

第 2 行有 N 个用空格隔开的正整数,为所产生的随机数。

输出格式

对于每组测试实例,输出 2 行,第 1 行为 1 个正整数 M,表示不相同的随机数的个数。第 2 行为 M 个用空格隔开的正整数,为从小到大排好序的不相同的随机数。

样例输入

10
20 40 321 67 40 20 89 301 407 15

样例输出

8
15 20 40 67 89 301 321 407



此题由于数据范围都不大,所以方法较多。可以采用桶排序的方法;也可以先排序,再依次找重复的数字
这道题首先要求无重复,之后是排序,因此可以利用C++语言中的set关联容器是最方便的,因此第一种实现方式就是采用set关联容器。
第二种方式也是常用的方法,因为是要有序和唯一的,因此我们可以利用数组来实现,将生成的数看做数组的下角标,如果存在这个数就将数组中的这个元素置1,这样无论有多少个重复的数,该元素都是1,因此实现去重。


方法一:
#include <iostream>
#include <set>
using namespace std;
int main()
{
 int num=0;
 int value;
   while(cin>>num)
   {
       set<int> orgroup;
       for (int i = 0; i<num; i++)
       {
           cin >> value;
           orgroup.insert(value);
       }
       for (auto m=orgroup.begin();m!=orgroup.end();m++)
       {
           cout << *m << endl;
       }
   }
 return 0;
}

方法二:

#include <iostream>
using namespace std;
int main()
{
   int loop;
   while(cin>>loop)
   {
       int num[1001]={0};
       for(int i=0;i<loop;i++)
       {
           int j;
           cin>>j;
           num[j]=1;
       }
       for(int i=0;i<=1001;i++)
       {
           if(num[i]==1)
           {
               cout<<i<<endl;
           }
       }
   }
   return 0;
}

 





标签:ZN,排序,int,1107,num,随机数,orgroup
From: https://www.cnblogs.com/Edward-Jie/p/17299412.html

相关文章

  • 输入数据有多组,每组测试数据有 2 行,第 1 行为 1 个正整数,表示所生成的随机数的个数:N
    #include<iostream>#include<string>usingnamespacestd;voidsort(strings){chartmp[100];intlen=s.size();intcount=0,i,j;for(i=0;i<len;i++){for(j=i+1;j<len;j++){i......
  • java 生成不重复的随机数
    importjava.text.SimpleDateFormat;importjava.util.Date;publicclassTest2{ publicstaticvoidmain(String[]args){ SimpleDateFormatformatter2=newSimpleDateFormat("yyyy年MM月dd日HH:mm:ss"); SimpleDateFormatformatter=newSimpleDateF......
  • 汇编延时输出随机数
    ;***********************************************************************;TITLE生成20个随机数;***********************************************************************;***********************************************************************;程序运行......
  • 11、随机数
    /***@authorly(个人博客:https://www.cnblogs.com/qbbit)*@date2023/4/115:51*@tags喜欢就去努力的争取*/packagemainimport( "fmt" "math/rand" "time")funcmain(){ //随机数 i:=rand.Int() fmt.Println("i:"......
  • 生产不会重复的随机数
    importjava.text.SimpleDateFormat;importjava.util.ArrayList;importjava.util.Date;importjava.util.List;importjava.util.Random;publicclassMyRandom{......
  • 取随机数
    #include<iostream>#include<cstdlib>#include<ctime>usingnamespacestd;intmain(){ intindex=1; srand(time(0)); intnum=rand()%100; inta; do{ c......
  • 随机数的获取
    Math.ceil();//向上取整。Math.floor();//向下取整。Math.round();//四舍五入。Math.random();//0.0~1.0之间的一个伪随机数。【包含0不包含1】//比如0.8......
  • 嵌套 if 三次猜随机数
    '''定义一个数字1到10随机产生,通过3次判断来猜出数字'''importrandomnum=random.randint(1,10)print(num)ifint(input("第一次,猜猜数字是:"))!=num:p......
  • JS中生成8位的随机数字
    场景前端使用websocket连接服务端时,后缀添加一个随机的8位数字,确保多个浏览器能同时访问。注:注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现1、实现......
  • 如何用C语言对十亿数据排序大体就是用分块法把十亿个随机数据排序?
    分析过程将十亿个数据按照一定的规则分成若干个块,每个块包含M个数据,其中M是一个适当的大小,可以根据实际情况进行调整。1、对每个块内的数据进行排序,可以使用快速排序、归......