1423: [蓝桥杯]错误票据 【简单 / 有意思】

在这里插入图片描述
http://oj.ecustacm.cn/problem.php?id=1423

#include<cstdio>
#include<iostream>
#include<string>
using namespace std;
int hush[100005];
int a[105]; 
int main(void)
{
    
    
	int number;
	int id;//重复
	int id1;//缺失
	int i;
	cin>>number;//读取行 
	while(cin>>number)
	{
    
    
		if(hush[number]==true)
		{
    
    
			id=number;//找到了重复
		}
		hush[number]=true;
	}
	for(i=0;i<100050;i++)
	{
    
    
		if(hush[i])//找到从哪里开始
		{
    
    
			break;
		}
	}
	for(i=i;i<=100050;i++)
	{
    
    
		if(hush[i]==false)//找到断电
		{
    
    
			id1=i;
			break;
		}
	}
	cout<<id1<<" "<<id<<endl;
	return 0;
}

另一种写法:

#include<cstdio>
#include<iostream>
#include<string>
#include<sstream>
#include<algorithm> 
using namespace std;
int a[100500]; 
int main(void)
{
    
    
	int n; cin>>n;
	int i=0;
	string str;
	getline(cin,str);
	while(n--)
	{
    
    
		getline(cin,str);
		stringstream ssin(str);
		while(ssin>>a[i]) i++;
	}
	sort(a,a+i);
	int res1,res2;
	for(int j=1;j<i;j++)
	{
    
    
		if(a[j]==a[j-1])
			res1=a[j];
		if(a[j]-a[j-1]==2)
			res2=a[j]-1; 
	}
	cout<<res2<<" "<<res1<<endl;
	return 0;
}

注意: 在用 getline()时要 先读一次。
因为getline会吸收上一次cin>>n的换行。所以需要提前读一次 消除换行。

猜你喜欢

转载自blog.csdn.net/bettle_king/article/details/115415835
今日推荐