在序号满足题目条件的情况下,还要判断是否多次中奖,如果超过一次,那么就后延,直到有人满足没中过奖,输出昵称,(接下来是重点),然后从这个人的序号开始,相隔给定的数目,再继续查找。
还有一点就是利用map<string,int> 来记录是否中奖重复
#include <iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<map>
using namespace std;
map<string, int> mapp;
int main()
{
int a, b, c, num = 0;
string s;
cin >> a >> b >> c;
for (int i = 1; i <= a; i++) {
cin >> s;
if (i>=c&&(i - c) % b == 0&&mapp[s] == 0) {
cout << s << endl;
mapp[s]++;
num++;
}
else if (i>=c&&(i - c) % b == 0 && mapp[s] != 0) {
while (mapp[s] != 0&&i<=a) {
i++;
cin >> s;
}
if (mapp[s] == 0) {
cout << s << endl;
c = i;
}
}
}
if (num == 0) {
cout << "Keep going...";
}
}