zoukankan      html  css  js  c++  java
  • 蓝桥杯练习系统历届试题 错误票据

    问题描述

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

    每张票据有唯一的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;
                    }
                }
            }*/
    

      

  • 相关阅读:
    基于聚宽量化交易平台实现量化交易策略
    量化交易——双均线策略(金叉死叉)
    商城支付功能
    商城——结算中心模块
    Tushare(金融数据接口包)
    CSS页面布局单位总结
    Python
    Python
    无需编程的爬虫
    Python
  • 原文地址:https://www.cnblogs.com/icode-girl/p/5255345.html
Copyright © 2011-2022 走看看