一、题目描述
原题链接 John got a full mark on PAT. He was so happy that he decided to hold a raffle(抽奖) for his followers on Weibo – that is, he would select winners from every N followers who forwarded his post, and give away gifts. Now you are supposed to help him generate the list of winners.
Input Specification:
Output Specification:
Sample Input 1:
9 3 2 Imgonnawin! PickMe PickMeMeMeee LookHere Imgonnawin! TryAgainAgain TryAgainAgain Imgonnawin! TryAgainAgain
Sample Output 1:
PickMe Imgonnawin! TryAgainAgain
Sample Input 2:
2 3 5 Imgonnawin! PickMe
Sample Output 2:
Keep going…
二、解题思路
对于这道题,我们可以利用map做一个字符串到数字的哈希,记录每个用户是否已经获过奖,如果获得过,则顺延;若未曾获奖,则输出名字,并且进行下一跳。代码还是比较易懂的。
三、AC代码
#include<iostream>
#include<cstdio>
#include<unordered_map>
#include<vector>
#include<algorithm>
using namespace std
;
unordered_map
<string
, int> mp
;
int main()
{
int N
, skip
, M
;
string str
;
scanf("%d%d%d", &N
, &skip
, &M
);
int cnt
= 0;
vector
<string
> v
;
for(int i
=1; i
<=N
; i
++)
{
cin
>> str
;
v
.push_back(str
);
}
for(int i
=M
; i
<=N
; )
{
if(mp
[v
[i
-1]] == 0)
{
cout
<< v
[i
-1] << endl
;
cnt
++;
mp
[v
[i
-1]] = 1;
i
+= skip
;
continue;
}
i
++;
}
if(cnt
== 0) printf("Keep going...");
return 0;
}