题目:https://pintia.cn/problem-sets/994805260223102976/problems/994805269828059136
一遍过

注意点

  1. 素数,我这种写法需要赋初值true
  2. cout字符串的时候可以使用+号连接

    代码

  1. #include<cstdio>
  2. #include<string>
  3. #include<vector>
  4. #include<iostream>
  5. #include<map>
  6. using namespace std;
  7. map<string, int> m;
  8. vector<bool> is_prime(10010, true);
  9. void get_prime(){
  10. is_prime[1] = false;
  11. for(int i = 2; i < 10010; i++){
  12. if(is_prime[i] == true){
  13. for(int j = 2 * i; j < 10010; j += i){
  14. is_prime[j] = false;
  15. }
  16. }
  17. }
  18. }
  19. int main(){
  20. get_prime();
  21. int n, k, check[10010] = {0};
  22. string temp;
  23. scanf("%d", &n);
  24. for(int i = 1; i <= n; i++){
  25. cin>>temp;
  26. m[temp] = i;
  27. check[i] = 1;
  28. }
  29. scanf("%d", &k);
  30. for(int i = 0; i < k; i++){
  31. cin>>temp;
  32. cout<<temp + ": ";
  33. if(m.find(temp) == m.end()){
  34. printf("Are you kidding?\n");
  35. } else {
  36. if(check[m[temp]] == 0) printf("Checked\n");
  37. else if(check[m[temp]] == 1){
  38. if(m[temp] == 1) printf("Mystery Award\n");
  39. else if(is_prime[m[temp]])printf("Minion\n");
  40. else printf("Chocolate\n");
  41. check[m[temp]] = 0;
  42. }
  43. }
  44. }
  45. return 0;
  46. }