C/C++教程

Acwing1204. 错误票据 题解

本文主要是介绍Acwing1204. 错误票据 题解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Acwing1204. 错误票据

Content

题目描述
某涉密单位下发了某种票据,并要在年终全部收回。

每张票据有唯一的 ID 号。

全年所有票据的 ID 号是连续的,但 ID 的开始数码是随机选定的。

因为工作人员疏忽,在录入 ID 号的时候发生了一处错误,造成了某个 ID 断号,另外一个 ID 重号。

你的任务是通过编程,找出断号的 ID 和重号的 ID。

假设断号不可能发生在最大和最小号。
输入格式
第一行包含整数\(N\),表示后面共有 \(N\) 行数据。

接下来 \(N\) 行,每行包含空格分开的若干个(不大于100个)正整数(不大于100000),每个整数代表一个 ID 号。

输出格式
要求程序输出1行,含两个整数 \(m,n\),用空格分隔。

其中,\(m\)表示断号 ID ,\(n\)表示重号 ID。

数据范围
\(\pmb{1 \le N \le 100}\)
输入样例

2
5 6 8 11 9 
10 12 9

输出样例

7 9

Slution

(暴力枚举) \(O(nlogn)\)

我们可以将数据排序,然后暴力枚举每一个为\(f[i]\),如果发现\(f[i] - f[i - 1] == 0\) 则为重号,\(f[i] - f[i - 1] > 1\)则为缺号。

Code

n = int(input());
f = [];
def main():
    for i in range(n):
        f.extend(list(map(int,input().split())));
    f.sort();
    size = len(f);
    for i in range(1,size):
        if f[i] - f[i - 1] == 0:
            ans = f[i];
        elif f[i] - f[i - 1] != 1:
            res = (f[i] + f[i - 1]) >> 1;
    print(res,ans);
    return 0;
main();
                
            
这篇关于Acwing1204. 错误票据 题解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!