2021-01-24

水题

题目概述(基本口水话)

集训队的摸鱼担当nuoyanli正在准备他的第一场天梯赛
nuoyanli虽然很菜,但是他非常喜欢写程序。写完程序以后,他必须先编译代码。
最初,编译器显示有Ñ个编译错误,其中每一个被表示为一个正整数。经过一番努力,    nuoyanli设法解决一个错误,然后又编译了下,又改正了一个错误。
nuoyanli可以完全肯定,他纠正了两个错误,但他忘记了是哪几个编译错误消失了。 
最最最可爱的yy能帮助nuoyanli来找出那两个已经被改正的错误么?(一定可以的,木啊) 

Input

输入的第一行包含整数n(3≤n≤10^ 5) - 表示编译错误的初始数量。
第二行包含n个空格分隔的整数a1,a2,...,an(1≤ai≤10^9),表示第一次编译的时候出现的n个编译错误的序号。
第三行包含n-1个空格分开的整数b1,b2,......,bn-1,表示改正了一个错误以后,第二次编译中显示的错误。保证第三行中的所有数字都是第二行中的所有数字,除了一个被改正了的错误。
第四行有n-2空格分开的整数c1, c2,..., cn-2,表示在又改正了一个错误之后,第三次编译显示的错误。保证在第四行的所有数字都是来自第三行的,除了被改正的那个错误。 

Output

输出只有两行,第一行输出一个整数,表示第一次被改正的错误的序号,第二行也输出一个整数,表示第二次被改正的错误的序号。题目保证输入数据都是正确的。

Sample Input

输入样例1:
5
1 5 8 123 7
123 7 5 1
5 1 7
 
输入样例2:
6
1 4 3 3 5 7
3 7 5 4 3
4 3 7 5

Sample Output

输出样例1:
8
123
 
输出样例2:
1
3 

Hint

注意如果有相同序号的编译错误同时出现,nuoyanli每次最多只能修改一个错误。

题目简单的说就是:
第一行输入一个数n(3≤n≤10^ 5)
第二行输入n个错误信息
第三行输入n-1个错误信息,少了的一个是因为修改后的原因
第四行输入n-2个错误信息,比第二次少了的一个是因为基于第二次修改后的原因

找出少的两个错误,由于输入是int,所以就是找出第二次比第一次,第三次比第二次少输入的数,题目保证二、三次输入的数除少的一个都是来自上一次输入,并且都是1到10^9范围内。

解决思路
第二次输入的数与第一输入的数进行对比,第三次输入的数与第二输入的数进行对比,为了方便对比,将三次输入的数放在等大数组里,空缺值以0代替。

代码步骤:
1、先定义足够大的数组a,b,c并且全部元素初始化为0。
2、输入全部数据。
3、对a,b,c数组进行快排。
4、a与b对于,b与c对比找出不同的数,并记录。
5、输出两个不同的数。

AC代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN=100001;
int a[MAXN],b[MAXN],c[MAXN];

int main()
{
    int n;
    scanf("%d",&n);
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));
    for(int i=0;i<n;i++)
        scanf("%d",&a[i]);
    sort(a,a+n);
    for(int i=0;i<n-1;i++)
        scanf("%d",&b[i]);
    sort(b,b+n-1);
    for(int i=0;i<n-2;i++)
        scanf("%d",&c[i]);
    sort(c,c+n-2);
    int ans1,ans2;
    for(int i=0;i<n;i++)
        if(b[i]!=a[i])
        {
            ans1=a[i];
            break;
        }
    for(int i=0;i<n;i++)
    {
        if(b[i]!=c[i])
        {
            ans2=b[i];
            break;
        }
	}
    printf("%d\n%d\n",ans1,ans2);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值