Problem Description
DaYu在新的学习开始学习新的数学知识,一天DaYu学习集合的时候遇到一个问题,他有一个集合A和A的子集B,他想用一个二进制串表示集合B。
Input
多组输入,每组的第一行有两个数n,m,(0< m < n < 10^5).
第二行输入n个数表示集合A,第三行输入m个数表示集合B,|data_i|< 10^5
Output
输出一个01字符串表示集合B
Example Input
10 5
1 2 3 4 5 6 7 8 9 10
1 3 5 7 8
Example Output
1010101100
代码:意思就是,n个数,然后输入m个数,对应位置上有的话就是1没有的话就是0
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n, m, i;
vector<int> a;
set<int> b;
while(~scanf("%d %d", &n, &m))
{
int num;
for(i = 0; i < n; i++)//n个数
{
scanf("%d", &num);
a.push_back(num);
}
for(i = 0; i < m; i++)//m个数
{
scanf("%d", &num);
b.insert(num);
}
for(i = 0; i < n; i++)//没有的话0,有的话1
{
if(!b.count(a[i])) printf("0");
else printf("1");
}
printf("\n");
a.clear(); b.clear();
}
return 0;
}