南邮 OJ 1977 集训队员筛选
2015-08-07 10:39
197 查看
集训队员筛选
时间限制(普通/Java) : 1000 MS/ 2000 MS 运行内存限制 : 65536 KByte总提交 : 267 测试通过 : 89
比赛描述
南邮官方有组织举办校级ACM竞赛活动起步于2007年11月,六年来参赛选手累计有80多人次获得了ACM竞赛(国家级)奖项, 20多名学生保送或考取国内外知名大学硕士研究生,成果显著,成为校级ACM队员应该说一个很大的荣誉和技术实力象征,每年申请参加ACM竞赛集训活动的同学非常多,考虑到ACM集训队活动室容量有限,所以需要采取措施对申请者进行筛选,其中一个方案是:
从1开始按顺序给每位申请者分配一个编号,依次为1, 2,..., K,所有申请者按照编号从小到大排成一个队列,然后进行m轮筛选,每一轮都会使用一个数字决定哪些申请者被淘汰,例如,m轮使用的数字依次为r1,
r2, …, rm, 在第i轮中,队列位置是ri倍数的申请者被淘汰(这些位置包括ri,2ri,3ri,…),被淘汰的申请者离开队列,队列开始位置为1,1≤i≤m。
经过m轮筛选,请你从小到大依次给出没有被淘汰申请者的编号。
输入
输入第1行给出一个整数K(1≤K≤100),第2行给出一个整数m(1≤m≤10),m表示进行筛选的轮数。
接下来输入m行,每行给出一个整数,其中第i行包含一个整数ri,含义是当前队列位置是ri倍数的申请者被淘汰,1≤i≤m,2≤ri≤100。
输出
从小到大依次输出没有被淘汰申请者的编号,每一个编号在单独一行输出。
样例输入
10
2
2
3
样例输出
1
3
7
9
题目来源
NUPT
#include<iostream> #define MAX_N 101 bool del[MAX_N]; int main(){ int k,m,r,i,j; scanf("%d%d",&k,&m); while(m--){ scanf("%d",&r); i = 0; while(i<=k){ j = 1; while(j<=r && i<=k){ i++; if(!del[i]){ j++; } } del[i] = 1; } } for(i=1;i<=k;i++){ if(!del[i]){ printf("%d\n",i); } } }
相关文章推荐
- pgrep
- Android listview去掉或隐藏滚动条
- redis
- 树莓派更新软件源
- Thread.join()分析方法
- c语言》排序法
- python学习之 字符串前'r'的用法
- Expires和max-age的区别
- VS2010属性表的建立与灵活运用
- WEB架构师成长系列索引
- Jmeter 学习资源
- Swift和Objective-C混合编程——Swift调用OC
- docker centos7 容器问题
- 视频通话研究001
- Leetcode #209 Minimum Size Subarray Sum
- 南邮 OJ 1974 BRN
- mysql 查询多个id
- 数据结构之树和二叉树---二叉树的遍历
- LFI通过proc/self/environ直接获取webshell
- onConfigurationChanged未被调用的原因