題目來源:codeforces 2041A
題目名稱:The Bento Box Adventure
題目連結:https://codeforces.com/contest/2041/problem/A
題目描述:
您計劃從週一到週五每天去一家不同的餐館打包盒飯作為午餐。從週一到週四,您已經去過一家餐廳,每次都去不同的餐廳。現在是週五,你想去本週最後一家還沒去過的餐廳。
請編寫一個程式,輸入你已經去過的四家餐廳(週一至週四每天一家),然後輸出你週五應該去的餐廳
輸入:
單行輸入,包含四個整數 a,b,c,d,每個整數在 1 到 5 之間(含 5),依次代表您從週一到週四去過的餐廳編號。
1≤a,b,c,d≤5
所有四個數字都將不同。
輸出:
輸出您週五應該去的餐廳編號
樣例1:
輸入 1 3 2 5
輸出 4
樣例2:
輸入 2 5 4 3
輸出 1
思路:集合的差集操作
程式碼如下:
點選檢視程式碼
#include <bits/stdc++.h>
using namespace std;
int main(){
vector<int> a(4);
// 建立一個包含所有餐廳編號 (1-5) 的集合
set<int> b={1,2,3,4,5};
set<int> d;
for(int i=0;i<4;i++){
cin>>a[i];
}
// 將訪問過的餐廳轉換為集合
set<int> c(a.begin(),a.end());
// 找出剩餘的餐廳 (集合差)
for(int ret:b){
if(c.find(ret)==c.end()){
d.insert(ret);
}
}
// 返回剩餘集合中的唯一元素
int s=*d.begin();
cout<<s<<endl;
return 0;
}