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;
}
相关文章
|
2月前
|
人工智能 云栖大会
|
存储 Cloud Native 大数据
开发者社区连续打卡抽奖活动规则
庆祝“探索云世界”上线,各子社区推出连续打卡抽奖活动
21543 28
|
10月前
|
算法 网络协议 Java
双非本科跨专业5面京东,8600小时后收到通知,流下喜悦泪水
自身情况: 1、本科双非,硕士211,均不是计算机相关专业。 2、研究生期间从事的科研项目,材料方向,没有java或者其它编程相关的项目。 3、本科参加比赛较多,电子设计大赛,大学生数学竞赛等,没有程序相关的比赛经历。 4、由于身边的人大多数从事程序员行业,自己其实也很纠结,于是疫情期间(2020年4月份)开始零基础看Java,由于个人原因,5、6月份也没怎么学习,断断续续刷了点题(真后悔5、6月份没好好刷题)。还狠狠地梳理了一遍知识体系
|
存储 小程序 API
【 uniapp - 黑马优购 | 购物车页面(2)】如何实现收货地址区域功能、常见问题解决方案
【 uniapp - 黑马优购 | 购物车页面(2)】如何实现收货地址区域功能、常见问题解决方案
303 0
|
移动开发 安全 数据管理
定制开发拼团抽奖H5规则设计解析
定制开发拼团抽奖H5规则设计解析
|
安全 Java PHP
拼团抽奖模式开发源码规则分析
团系统开发的信息和资源。
第57/90步《后端篇》第3章 添加排行榜和广告 第6课
今天学习《后端篇》第3章 添加排行榜和广告 第6课 添加好友排行榜,为社交营销助力
68 0
第58/90步《后端篇》第3章 添加排行榜和广告 第7课
今天学习《后端篇》第3章 添加排行榜和广告 第7课 添加广告
68 0
小程序文章转发到企业微信朋友圈——自己记录可能不适合每个人
小程序文章转发到企业微信朋友圈——自己记录可能不适合每个人
|
安全 Java 微服务
一张图告诉你为什么是服务网关,文末有现金抽奖。
网关服务是单一访问点,并充当多项服务的代理。服务网关启用了跨所有服务的路由转发、过滤和公共处理等。 在微服务实践中远不止这点功能,它可以做到统一接入、流量管控、安全防护、业务隔离等功能。
110 0