zoukankan      html  css  js  c++  java
  • 【洛谷1106明明的随机数】

    题目描述

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

    输入输出格式

    输入格式:

    输入有两行,第11行为11个正整数,表示所生成的随机数的个数NN

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

    输出格式:

    输出也是两行,第11行为11个正整数MM,表示不相同的随机数的个数。

    22行为MM个用空格隔开的正整数,为从小到大排好序的不相同的随机数。

    输入输出样例

    输入样例#1: 复制
    10
    20 40 32 67 40 20 89 300 400 15
    
    输出样例#1: 复制
    8
    15 20 32 40 67 89 300 400
    

    说明

    NOIP 2006 普及组 第一题

    分析:

    该题是考察排序这一算法,这里我用了一种sort排序,即把从a~a+n个数按从小到大的顺序排序,代码如下

                                                                                                                           sort(a,a+n+1);

    本题用到的去重也是一个难点,可以放到排序之后去执行,即用一个循环,如果第i个数与第i+1个数是一样的,就令第i个数为0,不再输出等于0的数;

    AC程序如下

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstdlib>
    #include<iomanip>
    #include<cstring>
    #include<algorithm>//一大堆头文件,本蒟蒻初学,把会的都打上;
    using namespace std;
    int a[1001];
    int m;
    int print();
    int main()
    {
        int s=0;
        cin>>m;
        for(int i=1;i<=m;++i)
            cin>>a[i];
        sort(a,a+m+1);//排序:注意是m+1;
        for(int i=1;i<=m;++i)
        {
            if(a[i]==a[i-1])
              a[i-1]=0;
            else
              s++;
        }//去重;
        cout<<s<<endl;
        for(int i=1;i<=m;++i)
        {
            if(a[i]!=0) cout<<a[i]<<" ";
        }
    }
  • 相关阅读:
    Microsoft Excel 不能使用对象链接和嵌入的错误/cannot use object linking and enbedding
    (转)QML代码与现有Qt UI代码整合
    vs2012编译Qwt
    参数和返回类型也可以多态
    多态的运行
    调用哪个方法
    继承的意义
    设计继承树2
    设计继承树1
    了解继承
  • 原文地址:https://www.cnblogs.com/juruohqk/p/10409152.html
Copyright © 2011-2022 走看看