1015: 【出圈】
2016-03-05 11:15
225 查看
题目描述 设有n个人围坐一圈并按顺时针方向从1到n编号,从第1个人开始进行1到m的报数,报数到第个m人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所剩下一人为止。 输入 输入多行,每行2个数,分别表示n和m. 输出 计算每一行中最后剩下这个人的编号. 样例输入 10 3 样例输出 4 #include <iostream> using namespace std; int person[100]; int main() { int n, m, inside; while(cin>>n>>m) { inside = n; for(int i = 0; i < n; i++) { person[i] = 1; } int num = 0, rear = 0; for(;;) { while(num != m) { if(person[rear % n] == 1) { num++; rear = (rear + 1) % n; } else { rear = (rear + 1) % n; //person[rear % n]为0的时候,只要将rear往后移一个,其他不变 } } if(num == m) { if(rear == 0) { person[n-1] = 0; num = 0; inside--; //如果是最后一个为1,而num已经达到m,此时,因为rear已经变成了0, //所以要将最后一个赋值为0的情况 } else { person[rear - 1] = 0; num = 0; inside--; } } if(inside == 1)break; } for(int i = 0; i < n; i++) { if(person[i] == 1) { cout<<i+1<<endl; break; } } } return 0; }
相关文章推荐
- HDU 1498 50 years, 50 colors (二分图最小顶点覆盖)
- C# 【Math】 用法
- 求∏的近似值
- CentOs6.7 python2.6升级到2.7.11
- linux shell 取文件名后缀
- Javaweb中的监听器
- Dubbo阅读笔记——高级功能
- s3c2440 学习笔记 Nand flash和中断控制器
- Redis使用详细教程
- 静音模式
- VCC/AVCC/VDD/AVDD区别
- Firefox禁缓存
- U-boot分析与移植(3)----U-boot stage2分析
- Xcode常用的快捷键
- 第12期 花飞蝶舞惊蛰 3月刊
- Utf8,Unicode,多字节等一些字符集的处理函数
- 软件工程导论第一周作业(你认为一些军事方面的软件系统采用什么样的开发模型比较合适?)
- 第0周学习资源阅读感悟
- 【Android】19.1 SharedPreferences类
- linux下umask详解