zoukankan      html  css  js  c++  java
  • 2013年省赛A组蓝桥杯试题--错误票据

    错误票据

    题目描述:题目描述

    某涉密单位下发了某种票据,并要在年终全部收回。 每张票据有唯一的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

    只是一道蓝桥杯真题,出自13年省赛A组试题。难度也并不大,代码也可以写的比较简洁又不失逻辑,最重要的是易懂,不多blabla。直接上代码。

     #include<iostream>
     using namespace std;
     
     int a[100000];//建立全局数组,默认存储0值
     int main()
     {
      int n;
      cin >> n;
     
      int x;
      while (cin >> x)//以票据号为索引,所存值为该票据的张数,通过数组的索引与value建立起了联系。
      {
      a[x]++;
      }
      int begin, duan, chong;
     
      //下面的循环是为了找到票据的第一张
      for (begin = 0; begin < 100000; begin++)
      {
      if (a[begin]!=0)
      break;
      }
      bool flag1 = true, flag2 = true;
      //定义俩bool量,方便以下循环到合适的时机break,提高效率
      for (; (flag1 || flag2) && begin < 100000; begin++)
      {
      if (a[begin] == 0)
      {
      flag1 = false;
      duan = begin;
      }
      if (a[begin] == 2)
      {
      flag2 = false;
      chong = begin;
      }
      }
      cout << duan << " " << chong << endl;
      system("pause");
      return 0;
     }

    我相信代码应该是清晰易懂的,希望对各位网友有些许帮助~^_^

  • 相关阅读:
    JSP 学习笔记1
    XML scriptlet 连接数据库
    JSP 定义行列数表单创建表格
    JSP_01
    JS创建表格完整
    04-基本的mysql语句
    03-MySql安装和基本管理
    02-数据库概述
    01-MySql的前戏
    爬虫系列
  • 原文地址:https://www.cnblogs.com/yuanshixiao/p/13386972.html
Copyright © 2011-2022 走看看