题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805409175420928
注意点
- set.find函数,如果找到了某元素,那么就是it != set.end(),因为会在最后一个空区域之前就找到元素
- 百分号在printf里面要用%%才能打出来
- 需要浮点数的时候,在一开始最好乘一个浮点数
代码
#include<iostream>#include<algorithm>#include<set>using namespace std;const int set_num = 50;set<int> st[set_num];int main(){int n, m, k;int st1, st2;int temp_m;int count;scanf("%d",&n);for(int i = 0; i < n; i++){scanf("%d",&m);for(int j = 0; j < m; j++){scanf("%d",&temp_m);st[i].insert(temp_m);}}scanf("%d",&k);for(int i = 0; i < k; i++){count = 0;scanf("%d%d", &st1, &st2);for(auto it = st[st1 - 1].begin(); it != st[st1 - 1].end(); it++){if(st[st2 - 1].find(*it) != st[st2 - 1].end()) count++;}int totalnum = st[st1 - 1].size() + st[st2 - 1].size() - count;double result = count * 100.0 / totalnum;printf("%.1lf%%\n",result);}return 0;}
