蓝桥杯-错误票据

2018-01-09 10:29:11 浏览数 (1)

先说题意,输入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;
}

0 人点赞