解题代码
#include<unordered_map>
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int n;
string str;
unordered_map<string, int> m;
bool isprime(int a) {
if (a <= 1) return false;
int sqr = (int)sqrt(1.0*a);
for (int i = 2; i <= sqr; i++) {
if (a % i == 0) return false;
}
return true;
}
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
cin >> str;
m[str] = i + 1;
}
cin >> n;
for (int i = 0; i < n; i++) {
cin >> str;
int index = m[str];
if (index == 0)
cout << str << ": Are you kidding?";
else if (index == -1)
cout << str << ": Checked";
else {
if (index == 1) cout << str << ": Mystery Award";
else if (isprime(index)) cout << str << ": Minion";
else cout << str << ": Chocolate";
m[str] = -1;
}
cout << endl;
}
return 0;
}
测试结果
问题整理
1.基础题目。
2.判断素数子函数注意<=sqr。