蓝桥杯:[蓝桥杯 2013 省 AB] 错误票据 题解

该编程任务旨在通过输入的ID号序列,找出因录入错误导致的断号ID和重号ID。程序首先对ID号进行排序,然后通过比较相邻ID的差异来识别问题。当发现连续ID差值为2时,表明存在断号,差值为0时,则标识重号。
摘要由CSDN通过智能技术生成

题目背景

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

题目描述

每张票据有唯一的 ID 号,全年所有票据的 ID 号是连续的,但 ID 的开始数码是随机选定的。因为工作人员疏忽,在录入 ID 号的时候发生了一处错误,造成了某个 ID 断号,另外一个 ID 重号。

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

数据保证断号不可能发生在最大和最小号。

输入格式

一个整数 N(N<100)N(N<100) 表示后面数据行数,接着读入 NN 行数据,每行数据长度不等,是用空格分开的若干个(不大于 100100 个)正整数(不大于 10^5105),每个整数代表一个 ID 号。

输出格式

要求程序首先输入要求程序输出 11 行,含两个整数 mm,nn,用空格分隔,其中,mm 表示断号 ID,nn 表示重号 ID。

/*遍历:
1.排序 
2.sort函数找出最小的数
3.寻找断点
4.寻找两个相同的数*/
//#include<sstream>
//#include<algorithm>
#include<bits/stdc++.h>//c++万能头文件
using namespace std;
int a[10001],l;
int main()
{
	int N,m,n,i;
	string s;
	cin>>N;
	cin.ignore(numeric_limits<streamsize>::max(),"\n");//把回车前的所有数据都清除掉 
	for(i=1;i<=N;i++)
	{
		getline(cin,s);//getline的优点就是在输入字符串的时候可以输入空格
		stringstream sin(s);//定义一个字符串输入流的对象sin,并调用sin的 复制构造函数 
							//将s中所包含的字符串放入sin 对象中
		while(sin>>a[++l]);
		
	}
	sort(a+1,a+l+1);//对数组中的元素进行排序
	for(i=2;i<=l;i++)
	{
		if(a[i]==a[i+1]-2) m=a[i]+1;//如1,3中存在断点则满足此条件3-1=2
		else if(a[i]==a[i+1]) n=a[i];

	 }
	printf("%d %d\n",m,n) ;
	return 0;
	
}	

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值