长理ACM 13-围圈报数(谌海军)
2016-03-12 23:47
225 查看
题目标题:
围圈报数(谌海军)
题目描述:
有n(n<=100)围成一圈,顺序排号(从1排到n)。从第一个人开始报数(从1报到m(m<=9)),凡报到m的人退出圈子,问最后留下的是原来第几号的那位?
输入描述:
输入为两个正整数,第一个<=100,第二个<=9;
输出描述:
输出为一个正整数;
样式输入:
100 3
样式输出:
91
编写代码:
View Code
解题思路:
1、定义一个长度为100数组a,初始化为0;
2、接收键盘输入值n,m,数组a的前n-1个元素赋值为1~n;
3、建立两层嵌套循环,外循环至退出人数为n-1为止,内循环中从0循环至n,将a数组中非0的数据逢m置零,同时记录退出人数;
4、循环全部结束后输出最后留下的一个a数组的非零元素的值。
围圈报数(谌海军)
题目描述:
有n(n<=100)围成一圈,顺序排号(从1排到n)。从第一个人开始报数(从1报到m(m<=9)),凡报到m的人退出圈子,问最后留下的是原来第几号的那位?
输入描述:
输入为两个正整数,第一个<=100,第二个<=9;
输出描述:
输出为一个正整数;
样式输入:
100 3
样式输出:
91
编写代码:
#include<stdio.h> int main() { int a[100]; int n, m, i, sum = 0, k = 0; scanf("%d%d", &n, &m); for(i = 0; i < n; i++) a[i] = i + 1; while(sum >= 0) { for(i = 0; i < n; i++) if(a[i] != 0) { k++; if(k == m) {a[i] = 0; k = 0; sum++;} } if(sum == n-1) break; else i = 0; } for(i = n-1; i >= 0; i--) if(a[i] != 0) printf("%d", a[i]); return 0; }
View Code
解题思路:
1、定义一个长度为100数组a,初始化为0;
2、接收键盘输入值n,m,数组a的前n-1个元素赋值为1~n;
3、建立两层嵌套循环,外循环至退出人数为n-1为止,内循环中从0循环至n,将a数组中非0的数据逢m置零,同时记录退出人数;
4、循环全部结束后输出最后留下的一个a数组的非零元素的值。
相关文章推荐
- Mindjet MindManager for Mac 10.3.637 注册版
- onSavaInstanceState的用法
- Git 多人协作
- Win7系统上安装SQL Server 2008
- 在服务中播放音乐
- 开发环境 : 库, FrameWork, Cocoa, Xcode
- Morse Code-神奇而朴实的摩斯电码
- 从B树、B+树、B*树谈到R 树
- 学习进度条(第二周)
- linux高级IO之readv/writev
- GCC 编译 参数
- Hello World!
- 关于wamp2.5系统找不到指定文件的一个解决办法
- Please read “Security” section of the manual to find out how to run mysqld as root!错误解决(转)
- Java之 将程序打包成jar包
- Unity3D 5 官方教程:标准着色器
- JAVA学习笔记03
- Rescue
- swift:swift与oc代码互相调用
- java中静态代码块的用法及其与静态方法的区别