1069. 微博转发抽奖(20)

迷南。 2022-05-26 07:53 293阅读 0赞

小明PAT考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔N个人就发出一个红包。请你编写程序帮助他确定中奖名单。

输入格式:

输入第一行给出三个正整数M(<= 1000)、N和S,分别是转发的总量、小明决定的中奖间隔、以及第一位中奖者的序号(编号从1开始)。随后M行,顺序给出转发微博的网友的昵称(不超过20个字符、不包含空格回车的非空字符串)。

注意:可能有人转发多次,但不能中奖多次。所以如果处于当前中奖位置的网友已经中过奖,则跳过他顺次取下一位。

输出格式:

按照输入的顺序输出中奖名单,每个昵称占一行。如果没有人中奖,则输出“Keep going…”。

输入样例1:

  1. 9 3 2
  2. Imgonnawin!
  3. PickMe
  4. PickMeMeMeee
  5. LookHere
  6. Imgonnawin!
  7. TryAgainAgain
  8. TryAgainAgain
  9. Imgonnawin!
  10. TryAgainAgain

输出样例1:

  1. PickMe
  2. Imgonnawin!
  3. TryAgainAgain

输入样例2:

  1. 2 3 5
  2. Imgonnawin!
  3. PickMe

输出样例2:

  1. Keep going...

代码:

  1. #include<stdio.h>
  2. #include<iostream>
  3. #include<string>
  4. #include<map>
  5. #include<vector>
  6. using namespace std;
  7. map<string,int> Map;
  8. vector<string> v;
  9. int main()
  10. {
  11. int i,j,n,m,k,t;
  12. scanf("%d %d %d",&n,&m,&k);
  13. for(i=1;i<=n;i++)
  14. {
  15. string s;
  16. cin>>s;
  17. if(i==k)
  18. {
  19. Map[s]=1;
  20. v.push_back(s);
  21. t=0;
  22. }
  23. else if(i>k)
  24. {
  25. if(Map.find(s)==Map.end())
  26. {
  27. t++;
  28. if(t%m==0)
  29. {
  30. Map[s]=1;
  31. v.push_back(s);
  32. }
  33. }
  34. }
  35. }
  36. if(v.size()==0)
  37. {
  38. printf("Keep going...\n");
  39. return 0;
  40. }
  41. for(i=0;i<v.size();i++)
  42. {
  43. cout<<v[i]<<endl;
  44. }
  45. return 0;
  46. }

发表评论

表情:
评论列表 (有 0 条评论,293人围观)

还没有评论,来说两句吧...

相关阅读

    相关 1069 转发抽奖(JAVA)

    小明 PAT 考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔 N 个人就发出一个红包。请你编写程序帮助他确定中奖名单。 输入格式: 输入第一行给出

    相关 1069. 转发抽奖(20)

    小明PAT考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔N个人就发出一个红包。请你编写程序帮助他确定中奖名单。 输入格式: 输入第一行给出三个正整数M