zoukankan      html  css  js  c++  java
  • [蓝桥杯][2013年第四届真题]错误票据(解题报告)按行读入整数

    问题 1458: [蓝桥杯][2013年第四届真题]错误票据

    题目描述
    某涉密单位下发了某种票据,并要在年终全部收回。 
    每张票据有唯一的ID号。全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。 
    因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另外一个ID重号。 
    你的任务是通过编程,找出断号的ID和重号的ID。 
    假设断号不可能发生在最大和最小号。 
    输入
    要求程序首先输入一个整数N(N< 100)表示后面数据行数。 
    接着读入N行数据。 
    每行数据长度不等,是用空格分开的若干个(不大于100个)正整数(不大于100000),请注意行内和行末可能有多余的空格,你的程序需要能处理这些空格。 
    每个整数代表一个ID号。 
    输出
    要求程序输出1行,含两个整数m  n,用空格分隔。 
    其中,m表示断号ID,n表示重号ID 
    样例输入
    2 
    5  6  8  11  9  
    10  12  9 
    样例输出
    7 9

    一个简单的骚操作:
    当读入为空格时停止读入
    通过循环来实现读取的行数
    while(cin>>num)//小技巧
        {
            a[num]++;
            if(cin.get()=='
    ')
                break;
    }
     1 #include<iostream>
     2 
     3 using namespace std;
     4 int a[(int)1e5+5];
     5 
     6 
     7 int main ()
     8 {
     9     int n;
    10     cin>>n;
    11     int num;
    12     int t=0;
    13     int s=0;
    14     int  minnum=0x3f,maxnum=0;
    15     while(n--)
    16     while(cin>>num)//小技巧
    17     {
    18         a[num]++;
    19         if(cin.get()=='
    ')
    20             break;
    21         minnum=min(minnum,num);
    22         maxnum=max(maxnum,num);
    23     }
    24     for(int i=minnum;i<=maxnum;i++)//最简单的hash:通过数组进行;//当标记值为0时,为缺位,标记值为2时为重位
    25         if(a[i]==2)
    26             s=i;
    27     else if(a[i]==0)
    28         t=i;
    29      //   cout<<minnum<<' '<<maxnum<<endl;
    30     cout<<t<<' '<<s<<endl;
    31     return 0;
    32 }


  • 相关阅读:
    工厂方法
    简单工厂
    单例模式
    MVC中Cookies的简单读写操作
    windows服务开启(收藏url)
    WCF的三种模式
    SvcUtil.exe导入WCF
    简述wcf应用
    sql的几种常用锁简述
    Lucene.Net和盘古分词应用
  • 原文地址:https://www.cnblogs.com/zwx7616/p/10909706.html
Copyright © 2011-2022 走看看