题目来源: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;
}