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();
                
            
上一篇:如何在网站中使用腾讯地图


下一篇:WinUI get Launched Param, args.UWPLaunchActivatedEventArgs.Kind is aways returning as 'launch