题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805409175420928

注意点

  1. set.find函数,如果找到了某元素,那么就是it != set.end(),因为会在最后一个空区域之前就找到元素
  2. 百分号在printf里面要用%%才能打出来
  3. 需要浮点数的时候,在一开始最好乘一个浮点数

代码

  1. #include<iostream>
  2. #include<algorithm>
  3. #include<set>
  4. using namespace std;
  5. const int set_num = 50;
  6. set<int> st[set_num];
  7. int main(){
  8. int n, m, k;
  9. int st1, st2;
  10. int temp_m;
  11. int count;
  12. scanf("%d",&n);
  13. for(int i = 0; i < n; i++){
  14. scanf("%d",&m);
  15. for(int j = 0; j < m; j++){
  16. scanf("%d",&temp_m);
  17. st[i].insert(temp_m);
  18. }
  19. }
  20. scanf("%d",&k);
  21. for(int i = 0; i < k; i++){
  22. count = 0;
  23. scanf("%d%d", &st1, &st2);
  24. for(auto it = st[st1 - 1].begin(); it != st[st1 - 1].end(); it++){
  25. if(st[st2 - 1].find(*it) != st[st2 - 1].end()) count++;
  26. }
  27. int totalnum = st[st1 - 1].size() + st[st2 - 1].size() - count;
  28. double result = count * 100.0 / totalnum;
  29. printf("%.1lf%%\n",result);
  30. }
  31. return 0;
  32. }