题目描述
某涉密单位下发了某种票据,并要在年终全部收回。
每张票据有唯一的ID号。
全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。
因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另外一个ID重号。
你的任务是通过编程,找出断号的ID和重号的ID。
假设断号不可能发生在最大和最小号。
C++ 代码
#include <iostream>
#include <algorithm>
using namespace std;
int c[10001];
int main()
{
int N;
cin>>N;
int a=0,n,m;
while(N--){
while(cin>>c[a]){
a++;
}
}
sort(c,c+a+1);
for(int i=1;i<=a;i++){ //从第二个数字开始,如果一个数等于它前一个数,说明重号,如果减去前一个数大于1,说明断号
if(c[i]==c[i-1]){
n=c[i];
continue;
}
if(c[i]-c[i-1]>1){
m=c[i-1]+1;
continue;
}
}
cout<<m<<' '<<n<<endl;
return 0;
}