蓝桥杯 1458: [蓝桥杯][2013年第四届真题]错误票据 Easy only once *注意输入问题

基本思路:

典型的hash散列;

 

关键点:

输入问题:

这里涉及到了行号输入和EOF输入,需要注意一下;

 

本题完全可以利用EOF输入,但是示例中有了新的行号输入思想,要注意一下;

利用cin读入数字后,可以利用cin.get()来判断空格和回车问题,进行判断,按个进行判断,从而识别出换行符号;

 

#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<vector> 
#include<string>
#include<math.h>
#include<algorithm>
#include<cstring>
using namespace std;
using std::vector;
const int maxn = 100200;
int ar[maxn];

int main(){
	fill(ar, ar + maxn, 0);
	int n;
	cin >> n;
	getchar();
	int min=maxn;
	int max=-1;
	for (int i = 0; i < n; i++) {
		int a;
		//cout << 111 << endl;
		while (cin>>a){
			if (min > a)
				min = a;
			if (max < a)
				max = a;
			ar[a] ++;
			char c = cin.get();
			if (c == '\n')
				break;
		}	
	}
	int ansa, ansb;
	for (int i = min; i <= max; i++) {
		if (ar[i] == 0)
			ansa = i;
		if (ar[i] == 2)
			ansb = i;
	}
	cout << ansa << " " << ansb;
}

  

posted @ 2020-02-08 16:45  暮云林凌  阅读(175)  评论(0)    收藏  举报