PAT甲级1124 Raffle for Weibo Followers (20分)|C++实现

    科技2026-04-09  9

    一、题目描述

    原题链接 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; }
    Processed: 0.020, SQL: 9