先说题意,输入n(n<100),下面有n行,每行有数目不定的数字,然后中间有各种空格。输入完成后排序,然后找出重复的一个数和缺少的一个数(开头结尾的数不会缺少和重复)。
题真的非常非常的简单,只需要输入之后排序就可以了,可能难点在输入上,题意也说了,“请注意行内和行末可能有多余的空格,你的程序需要能处理这些空格。”,是的,我注意了,我调了很久然后都弄出来了,然后交了,莫名时间超限。一共就两组数据啊,第一组非常非常的少,竟然会超限。然后找了几个答案,也没看出来自己到底为啥子不行。直到我看到了一个人写,其实不用管格式,直接输入就可以。然后我试了,是不行的,最后就算你不停的回车也无法输出结果,但是。。。我交了,AC了,而且我也发现了一点,其他的AC代码也是可以通过EOF来结束的,而我的就没有将cin放到while的判断里。大概在检测的时候,最后结束的是EOF。。。所以这题的代码就是酱紫的(附带坑爹注释)
代码语言:javascript复制#include<iostream>
#include<algorithm>
#define N 10001
using namespace std;
char num[6];
int main() {
int n;
int len=0;
int a[N];
cin>>n;
while(cin>>a[len ]);
/*这里面的都是艹淡= =
char c='a';
cin.get();
while(n--) {
while(1) {
int t_len=0;
int flag=0;
c=cin.get();
while(c!=' ' && c!='n') {
num[t_len ]=c;
c=cin.get();
flag=1;
}
if(flag) {
a[len ]=atoi(num);
fill(num,num 6,0);
}
if(c=='n') break;
if(c==' ') continue;
}
}*/
sort(a,a len);
for(int i=1; i<len; i )
if(a[i]-a[i-1]==2) {
cout<<a[i]-1<<' ';
break;
}
for(int i=1; i<len; i )
if(a[i]-a[i-1]==0) {
cout<<a[i];
break;
}
return 0;
}