【藍橋杯真題練習】 PREV-5 錯誤票據
問題描述
某涉密單位下發了某種票據,并要在年終全部識訓,
每張票據有唯一的ID號,全年所有票據的ID號是連續的,但ID的開始數碼是隨機選定的,
因為作業人員疏忽,在錄入ID號的時候發生了一處錯誤,造成了某個ID斷號,另外一個ID重號,
你的任務是通過編程,找出斷號的ID和重號的ID,
假設斷號不可能發生在最大和最小號,
輸入格式
要求程式首先輸入一個整數N(N<100)表示后面資料行數,
接著讀入N行資料,
每行資料長度不等,是用空格分開的若干個(不大于100個)正整數(不大于100000),請注意行內和行末可能有多余的空格,你的程式需要能處理這些空格,
每個整數代表一個ID號,
輸出格式
要求程式輸出1行,含兩個整數m n,用空格分隔,
其中,m表示斷號ID,n表示重號ID
樣例輸入
2
5 6 8 11 9
10 12 9
樣例輸出
7 9
題目比較簡單,需要考慮的是,每行輸入的數字個數是不確定的,
這里復習一下stringstream的用法,
滿分代碼:
#include <iostream>
#include <cstdio>
#include <sstream>
int cnt[100005];
using namespace std;
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int n,t,minn=100000,maxn=0,a,b;
string s;
stringstream ss;
cin>>n;
cin.ignore();
while(n--)
{
getline(cin,s);
ss.clear();
ss<<s;
while(ss>>t)
{
cnt[t]++;
if(t<minn) minn=t;
if(t>maxn) maxn=t;
}
}
for(int i=minn;i<=maxn;i++)
{
if(cnt[i]==0) a=i;
if(cnt[i]==2) b=i;
}
printf("%d %d",a,b);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/259765.html
標籤:其他
上一篇:Android 中影片的基本使用
