1069 微博转发抽奖 (20 分)

简介: 1069 微博转发抽奖 (20 分)

1069 微博转发抽奖 (20 分)

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

输入格式:

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


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

输出格式:

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

输入样例 1:

9 3 2
Imgonnawin!
PickMe
PickMeMeMeee
LookHere
Imgonnawin!
TryAgainAgain
TryAgainAgain
Imgonnawin!
TryAgainAgain

输出样例 1:

PickMe
Imgonnawin!
TryAgainAgain

输入样例 2:

2 3 5
Imgonnawin!
PickMe

输出样例 2:

Keep going...

有一点比较麻烦,

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

使用集合类可以解决重复的问题,但是集合会按照元素值自动排序,顺序就会出问题。只好再多用一个数组来顺序存储。

#include<iostream>
#include<string>
#include<set>
using namespace std;
int main()
{
  int m, n, s;
  cin >> m >> n >> s;
  string name[1001];
  set<string> reward;
  for (int i = 1; i <=m; i++) {
    cin >> name[i];
  }
  string rewards[1001];
  int n_reward = 0;
  int count = 0;
  if (s > m)
    cout << "Keep going...";
  else {
    for (int i = s; i <= m; i++) {
      if ( reward.find(name[i]) != reward.end()) {
        continue;
      }
 
      if (count % n == 0) {
        if (i == s || reward.find(name[i]) == reward.end()) {
          reward.insert(name[i]);
          rewards[n_reward++] = name[i];
        }
      }
      count++;
    }
    for (int i = 0; i < n_reward; i++) {
      cout << rewards[i] << endl;
    }
  }
  return 0;
}
相关文章
考研真题)某银行提供了 1 个服务窗口和 10 个供顾客等待时使用的座位。顾客到达银行时,若有空座位,则到取号机上领取一个号,等待叫号。取号机每次仅允许一位顾客使用。当营业员空闲时,通过叫号选取一位顾
考研真题)某银行提供了 1 个服务窗口和 10 个供顾客等待时使用的座位。顾客到达银行时,若有空座位,则到取号机上领取一个号,等待叫号。取号机每次仅允许一位顾客使用。当营业员空闲时,通过叫号选取一位顾
|
存储 Cloud Native 大数据
开发者社区连续打卡抽奖活动规则
庆祝“探索云世界”上线,各子社区推出连续打卡抽奖活动
25430 30
|
算法 网络协议 Java
双非本科跨专业5面京东,8600小时后收到通知,流下喜悦泪水
自身情况: 1、本科双非,硕士211,均不是计算机相关专业。 2、研究生期间从事的科研项目,材料方向,没有java或者其它编程相关的项目。 3、本科参加比赛较多,电子设计大赛,大学生数学竞赛等,没有程序相关的比赛经历。 4、由于身边的人大多数从事程序员行业,自己其实也很纠结,于是疫情期间(2020年4月份)开始零基础看Java,由于个人原因,5、6月份也没怎么学习,断断续续刷了点题(真后悔5、6月份没好好刷题)。还狠狠地梳理了一遍知识体系
|
存储 搜索推荐 索引
推荐5款压箱底的宝贝软件,建议收藏转发
今天要给大家推荐5款压箱底的宝贝软件了,百度搜索一下就能找到下载链接了。
111 0
|
数据采集 搜索推荐 网络协议
秒收蜘蛛池超级蜘蛛池之百度秒收秒排名的做法
搜狗蜘蛛池,可以让新站快速收录,已经收录的网站使用超级蜘蛛池可以增加网站收录,提升网站排名。搜狗蜘蛛池,指的就是做大量站点,并作为自己的外链资源,从而让搜索引擎收录加快收录。简单而言,搜狗蜘蛛池就是一种排名程序,比如泛站或者站群。当有新的网站或新的页面时,把要做的排名关键词和URL放入到这些泛站资源页面上,当搜索引擎蜘蛛来到这些页面之后可以抓取和权重传递,在这里我们可以理解为外链。一个网站的收录排名权重越高,可以增加搜索引擎的分量,提高整站的流量,从而达到引流和品牌建设的效果。通过搜狗蜘蛛池目前做出来的搜狗蜘蛛,已经达到百万蜘蛛级别。
809 0
秒收蜘蛛池超级蜘蛛池之百度秒收秒排名的做法
第57/90步《后端篇》第3章 添加排行榜和广告 第6课
今天学习《后端篇》第3章 添加排行榜和广告 第6课 添加好友排行榜,为社交营销助力
78 0
第58/90步《后端篇》第3章 添加排行榜和广告 第7课
今天学习《后端篇》第3章 添加排行榜和广告 第7课 添加广告
73 0
(模拟)(笔记)1241. 外卖店优先级
(模拟)(笔记)1241. 外卖店优先级
87 0
小程序文章转发到企业微信朋友圈——自己记录可能不适合每个人
小程序文章转发到企业微信朋友圈——自己记录可能不适合每个人
|
数据采集 数据可视化 Python
如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例
前几天给大家分享了利用Python网络爬虫抓取微信朋友圈的动态(上)和利用Python网络爬虫爬取微信朋友圈动态——附代码(下),并且对抓取到的数据进行了Python词云和wordart可视化,感兴趣的伙伴可以戳这篇文章:利用Python词云和wordart可视化工具对朋友圈数据进行可视化。
1732 0