问题描述

某涉密单位下发了某种票据,并要在年终全部收回。

每张票据有唯一的ID号。全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。

因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另外一个ID重号。

你的任务是通过编程,找出断号的ID和重号的ID。

假设断号不可能发生在最大和最小号。

输入格式

要求程序首先输入一个整数N(N<100)表示后面数据行数。

接着读入N行数据。

每行数据长度不等,是用空格分开的若干个(不大于100个)正整数(不大于100000),请注意行内和行末可能有多余的空格,你的程序需要能处理这些空格。

每个整数代表一个ID号。

输出格式

要求程序输出1行,含两个整数m n,用空格分隔。

其中,m表示断号ID,n表示重号ID

样例输入1
2
5 6 8 11 9 
10 12 9
样例输出1
7 9
 
超级水的水题,然而第一次直接用scanf("%d", &num);处理空格的时候TLE了。然后换成gets(s);第一次WA了50%数据吧。因为找loseans的时候出现了点问题。按照我的思路,找这两个答案是有顺序的说。【反正就是笨笨的我在除了输入之外的那个找loser也卡了T_T】
附right代码:
  1 #include <stdio.h>
  2 #include <string.h>
  3 #include <iostream>
  4 #include <algorithm>
  5 #define inf 1000000000
  6/span> using namespace std;
  7 
  8 char str[1010];
  9 int num[210];
 10 
 11 int main()
 12 {
 13     int temp;
 14     int n, cnt, cans, lans;
 15     while(~scanf("%d", &n))
 16     {
 17         getchar();
 18         cnt = 0;
 19 
 20         while(n--)
 21         {
 22             temp = inf;
 23             gets(str);
 24             int len = strlen(str);
 25             for (int i=0; i<len; ++i)
 26             {
 27                 if (str[i] == ' ' && temp != inf)
 28                 {
 29                     num[cnt++] = temp;
 30                     temp = inf;
 31                 }
 32                 else if (str[i] >= '0' && str[i] <= '9')
 33                 {
 34                     if (temp == inf)
 35                     {
 36                         temp = str[i] - '0';
 37                     }
 38                     else temp = temp * 10 + str[i] - '0';
 39                 }
 40                 if (i == len-1 && temp != inf)
 41                 {
 42                     num[cnt++] = temp;
 43                     temp = inf;
 44                 }
 45             }
 46         }
 47        /* int k;
 48         for(int i=0; i<n; i++)
 49         {
 50             gets(str);//用gets可以输入空格
 51             //可以边输入边判断
 52             int len=strlen(str);
 53             for(int j=0; j<len; j++)
 54             {
 55                 if(str[j]>='0'&&str[j]<='9')
 56                 {
 57                     int now=0;
 58                     for(k=j; str[k]!=' '&&k<len; k++)
 59                         //注意k也要在字符串长度之内
 60                     {
 61                         now=now*10+str[k]-'0';
 62                     }
 63                     num[cnt++]=now;
 64                     j=k;
 65                 }
 66             }
 67         }*/
 68 
 69         sort(num, num+cnt);
 70         int id;
 71 
 72         for (int i=0; i<cnt-1; ++i)
 73         {
 74             if (num[i] == num[i+1])
 75             {
 76                 cans = num[i];
 77                 id = i;
 78                 break;
 79             }
 80         }
 81 
 82         lans = inf;
 83 
 84         for (int i=0; i<id; ++i)
 85         {
 86             if (num[i] != num[0] + i)
 87             {
 88                 lans = num[0] + i;
 89                 break;
 90             }
 91         }
 92 
 93         if (lans == inf)
 94         {
 95             for (int i=id+1, j=0; i<cnt; ++i, ++j)
 96             {
 97                 if (num[i] != cans+j)
 98                 {
 99                     lans = cans+j;
100                     break;
101                 }
102             }
103         }
104         cout << lans << " " << cans << endl;
105     }
106     return 0;
107 }
View Code

额。交完又发现别人家的代码就是长得好看啊~~~

这样多机智,为什么我一定要写的那么抽捏~~~【字符串处理成数组的时候】

   /* int k;
        for(int i=0; i<n; i++)
        {
            gets(str);//用gets可以输入空格
            //可以边输入边判断
            int len=strlen(str);
            for(int j=0; j<len; j++)
            {
                if(str[j]>='0'&&str[j]<='9')
                {
                    int now=0;
                    for(k=j; str[k]!=' '&&k<len; k++)
                        //注意k也要在字符串长度之内
                    {
                        now=now*10+str[k]-'0';
                    }
                    num[cnt++]=now;
                    j=k;
                }
            }
        }*/

  

posted on 2016-03-08 19:50  小小八  阅读(332)  评论(0编辑  收藏  举报