题解:
输入会给一个ID序列,这个是ranklist,可以用一个map把ID和名次存在一起,接下来的是k个query(查询),通过map相应查询来获取他对应的评语。但是难点是,如何确定它是被查询过了还是不在ranklist里呢。我暂时选择建立两个map,一个map存储信息,另一个map存储是否被访问。
代码:
#include<iostream>
#include<unordered_map>
#include<string>
using namespace std;
bool isPrime(int n){
if(n==0||n==1) return false;
for(int i=2;i*i<=n;i++){
if(n%i==0) return false;
}
return true;
}
int main(){
int n,k;
cin>>n;
unordered_map<string,int> data,vis;
string s;
for(int i=1;i<=n;i++){
cin>>s;
data[s]=i;
vis[s]=0;
}
cin>>k;
while(k--){
cin>>s;
printf("%s: ",s.c_str());
if(data[s]!=0){
if(vis[s]==1) printf("Checked\n");
else{
if(data[s]==1) printf("Mystery Award\n");
else if(isPrime(data[s])) printf("Minion\n");
else printf("Chocolate\n");
vis[s]=1;
}
}
else printf("Are you kidding?\n");
}
return 0;
}
一次就通过了!开心! 能看到自己的进步!加油!