「解題報(bào)告」藍(lán)橋杯2013省AB 錯(cuò)誤票據(jù)
P8598 [藍(lán)橋杯 2013 省 AB] 錯(cuò)誤票據(jù)
題目背景
某涉密單位下發(fā)了某種票據(jù),并要在年終全部收回。
題目描述
每張票據(jù)有唯一的 ID 號,全年所有票據(jù)的 ID 號是連續(xù)的,但 ID 的開始數(shù)碼是隨機(jī)選定的。因?yàn)楣ぷ魅藛T疏忽,在錄入 ID 號的時(shí)候發(fā)生了一處錯(cuò)誤,造成了某個(gè) ID 斷號,另外一個(gè) ID 重號。
你的任務(wù)是通過編程,找出斷號的 ID 和重號的 ID。
數(shù)據(jù)保證斷號不可能發(fā)生在最大和最小號。
輸入格式
一個(gè)整數(shù) \(N(N<100)\) 表示后面數(shù)據(jù)行數(shù),接著讀入 \(N\) 行數(shù)據(jù),每行數(shù)據(jù)長度不等,是用空格分開的若干個(gè)(不大于 \(100\) 個(gè))正整數(shù)(不大于 \(10^5\)),每個(gè)整數(shù)代表一個(gè) ID 號。
輸出格式
要求程序首先輸入要求程序輸出 \(1\) 行,含兩個(gè)整數(shù) \(m\),\(n\),用空格分隔,其中,\(m\) 表示斷號 ID,\(n\) 表示重號 ID。
輸入輸出樣例 #1
輸入 #1
2
5 6 8 11 9
10 12 9
輸出 #1
7 9
輸入輸出樣例 #2
輸入 #2
6
164 178 108 109 180 155 141 159 104 182 179 118 137 184 115 124 125 129 168 196
172 189 127 107 112 192 103 131 133 169 158
128 102 110 148 139 157 140 195 197
185 152 135 106 123 173 122 136 174 191 145 116 151 143 175 120 161 134 162 190
149 138 142 146 199 126 165 156 153 193 144 166 170 121 171 132 101 194 187 188
113 130 176 154 177 120 117 150 114 183 186 181 100 163 160 167 147 198 111 119
輸出 #2
105 120
#include <bits/stdc++.h>
using namespace std;
int N;
short num[100005];
int main() {
scanf("%d", &N);
int id;
while (scanf("%d", &id) != EOF) {
num[id] ++;
}
bool start = 0, fg = 1;
int n, m;
for (int i = 1; i <= 100000; ++ i) {
if (num[i]) {
if (fg) {
start = 1;
fg = 0;
}
if (num[i] > 1) {
n = i;
}
} else {
if (start) {
m = i;
start = 0;
}
}
}
cout << m << " " << n;
return 0;
}
朝氣蓬勃 后生可畏

浙公網(wǎng)安備 33010602011771號