1069. 微博转发抽奖(20)

时间限制
400 ms

内存限制
65536 kB

代码长度限制
8000 B

判题程序
Standard

作者
CHEN, Yue

小明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...

解析:计算机科学最重要的方法论就是分层\封装,如计算机系统结构,TCP\IP结构,这样做了以后可以使一件非常复杂的事情变得非常的明晰,这里面揭示了一种解决问题的方法论,就是一个问题非常复杂,看能不能分成几个层次或者阶段,在数学中也是这样,一个定理非常复杂(上学时我导师曾经用8个课时讲完一个定理),但是并不是上来就怼这个定理,而是讲了将近六七个引理,然后将这些引理连到一起就成了这个定理.

本题算法很简单(人脑想象),但是实现起来一头雾水,那就分成几个阶段吧:

1,从第S个开始, 每隔N个输出名字---->不难

2,在1基础上,输出名字时,顺便把名字存到另外一个数组中(供查阅是否有人重复得奖使用)--->简单

3,在2基础上,如果有人重复得奖,则把这种情况除掉--->简单

4, 在3的基础上增加没有人得奖这种情况-->简单

代码如下:

/*************************************************************************> File Name: 1069.c> Author: YueBo> Mail: yuebowhu@163.com> Created Time: Tue 30 May 2017 08:00:14 AM CST************************************************************************/#include <stdio.h>
#include <string.h>
#include <stdlib.h>int main()
{int M, N, S;char names[1000][32];char tmp[20];int i, j = 0, k;int cnt = 0;int flag, flag1 = 0;scanf("%d%d%d", &M, &N, &S);for (i = 1; i < S; i++)scanf("%s", tmp);i = 1;cnt = N - 1;while (i+S-1 <= M){scanf("%s", tmp);cnt++;if (cnt == N){flag = 0;for (k = 0; k < j; k++){if (!strcmp(names[k], tmp)){flag = 1;break;}}if (flag == 0){flag1 = 1;printf("%s\n", tmp);strcpy(names[j], tmp);j++;cnt = 0;}elsecnt = N - 1;}i++;}if (flag1 == 0)printf("Keep going...\n");return 0;
}

1069. 微博转发抽奖(20)相关推荐

  1. 【PAT乙】1069 微博转发抽奖 (20分) set

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

  2. PAT 1069. 微博转发抽奖(20)

    1069. 微博转发抽奖(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 小明PAT考了满分,高兴之余决定 ...

  3. 1069 微博转发抽奖 (20分)

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

  4. PAT 乙级 1069 微博转发抽奖 (20 分)

    题目:PAT 乙级 1069 微博转发抽奖 (20 分) 经验总结: 可以建立一个set,用于存放中奖用户.若set中有此用户,代表此用户已中奖,奖品顺延. C++代码: #include<bi ...

  5. 1069 微博转发抽奖 (20 分)(算法分析+代码实现)

    1069 微博转发抽奖 (20 分) 题目链接 算法分析 用flag记录是否输出过获奖人名字 用map类型take记录某人是否拿走过奖品 用cnt记录间隔人数 然后按要求输出就好. 代码实现 #inc ...

  6. 1069 微博转发抽奖 (20 分)

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

  7. 【最简便解法】1069 微博转发抽奖 (20分)

    立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 小明 PAT 考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔 N 个人就发出一个红包.请你 ...

  8. PAT Basic 1069. 微博转发抽奖(20)

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

  9. PAT 1069. 微博转发抽奖(20)-乙级

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

最新文章

  1. C#PDF转Image
  2. python函数注释 参数 省略号_解决python 输出是省略号的问题
  3. 如何根据sessionID获取session解决方案
  4. 操作系统原理:连续的内存分配
  5. python自动获取天气_用python获取天气数据,并作定时播报
  6. 软件测试基础知识(三)
  7. android 蒙版图片带拖动_黑橙修图:新手入门篇2-一句话带你认识图层蒙版
  8. 埃斯顿三轴机器人编程_一文了解Estun Studio机器人仿真与离线编程软件
  9. 2022 年最佳 15 款网络监控工具
  10. 找出数组中重复的值和所在位置
  11. Spring Cloud 与 Dubbo 功能对比
  12. 【供应链架构day10】供应链架构的基础逻辑
  13. 国外广告联盟,别被人当傻子割了
  14. 怎么看神经网络过早收敛_深度学习训练网络中,test loss比training loss早很多收敛,迭代次数要怎么取?...
  15. linux 755是什么意思
  16. JAVA-day09-多线程
  17. K8s 污点(Taints)与容忍(Tolerations)
  18. 【已解决】树莓派新系统连接vcn后无任务栏如何解决?
  19. 安装CV2,安装opencv
  20. 华硕ASUS B250M PLUS+i5 7500+核显+macos12.0+opencore0.7.2

热门文章

  1. 前端学习(1161):箭头函数02
  2. 淘宝主站Cgroup资源控制
  3. 玩转oracle 11g(22):ora-01691和修改密码过期时间
  4. java 盘符 系统_001-Java再回首开篇-入门基础
  5. 移动端click延迟和tap事件
  6. 理解CSS3 max/min-content及fit-content等width值
  7. 关于AI你可能不知道的5件事情
  8. 剑指offer--重建二叉树
  9. java面向对象编程思想_Java面向对象编程思想
  10. tc溜溜865手机投屏卡_溜溜tcgames老版本(电脑玩手机游戏)-溜溜TC Games32位/64位旧版本PC下载V2.0.0官网安卓真机投屏-西西软件下载...