有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。
题目描述
有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。
输入
初始人数为n。
输出
最后一个人的初始编号。
样例输入
3
样例输出
2
题目分析:首先我们可以把1 - n 每个元素先赋值为1;
然后查找数到3的人,把他的序号所赋值的1变为0;当还剩下最后一个人时,输出他的序号。
围成一个圈,可以使用循环当i循环到n + 1的时候,让i再次等于1,直到只剩下最后一个人,循环break。
代码展示
#include <stdio.h>int main()
{int n;int a[1000];scanf("%d",&n);int b = n;//剩余的人数int c = 0;//人们数的数for (int i = 1; i <= n; i++){a[i] = 1;}for (int i = 1;;i++){if (i == (n + 1))i = 1;if (a[i] == 1){c++;}else//代表序号为i的人已经退出圈子,当然不会再参与报数,所以直接continue.continue;if (c % 3 == 0)//当数到三的时候,剩余的人数减一{a[i] = 0;b--;}if (b == 1)//当只剩下一个人时,break,结束循环.break;}for (int i = 1; i <= n; i++){if (a[i] == 1)printf("%d\n", i);}return 0;
}
下面找了一道非常像的题,大家可以练习一下
题目描述
血小板是从骨髓成熟的巨核细胞胞浆解脱落下来的小块胞质。巨核细胞虽然在骨髓的造血细胞中为数最少,仅占骨髓有核细胞总数的0.05%,但其产生的血小板却对机体的止血功能极为重要。因血管创伤而失血时,血小板在生理止血过程中的功能活动大致可以分为两个阶段:第一阶段主要是创伤发生后,血小板迅速黏附于创伤处,并聚集成团,形成较松软的止血栓子;第二段主要是促进血凝并形成坚实的止血栓子。
有n(1<=n<=1000)只血小板在玩一个游戏,他们围成了一个圈,从编号为1的血小板开始报数,数到m(1<=m<=n)的那个人出列;然后出列血小板的下一只血小板又从1开始报数,数到m的那个人又出列。如此往复,问最后出列的是编号为多少的那只血小板。
输入
一行,两个数n和m,分别代表血小板的只数和出列的编号。
输出
最后剩下的血小板的编号。
样例输入
5 3
样例输出
4
#include <stdio.h>int a[1005];
int main()
{int n,m,i,c = 0;scanf("%d%d",&n,&m);int count = n;for (i = 1; i <= n; i++){a[i] = 1;}for (i = 1;;i++){if (i == n + 1)i = 1;if (a[i] != 0)c++;elsecontinue;if (c % m == 0){a[i] = 0;count--;}if (count == 1)break;}for (i = 1; i <= n; i++){if (a[i] != 0)printf("%d",i);}return 0;
}
代码和上面的差不多,大家要是有更好的方法欢迎交流。
有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。相关推荐
- 题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位. 提示:用数组完成
题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位. 提示:用数组完成 #include <stdio.h> in ...
- 有n个人围成一圈 顺序排号 java_java基础编程题有n个人围成一圈顺序排号
下面给大家带来的这道编程题可以算得上是一道非常基础的java编程题目,刚刚开始接触java编程的小伙伴一起来看看具体的题目以及解题方法吧. 下面是具体的题目,题目还是非常的简单的. 一.题目 有n个人 ...
- c/c++ 有n个人围成一圈, 顺序排号。从第1个人开始报数(从1~3报数), 凡报到3的人退出圈子, 问最后留下的人原来排在第几号。
解题思路的重要性显现出来了 比如这个题 n个人肯定是要用数组 毋庸置疑 那么报数怎么实现呢 可以设置一个循环变量 让他从0开始循环 当等于3 的时候 就归零 还有 n个人 肯定需要很多圈报数 这个很多 ...
- 有n个人围成一圈 顺序排号 java_java有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出...
public class Test { public static void main(String[] args) { // 测试数据 ArrayList list = new ArrayList( ...
- ACMNO.38 C语言-报数 有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。
题目描述 有n人围成一圈,顺序排号. 从第1个人开始报数(从1到3报数),凡报到3的人退出圈子.`在这里插入代码片` 问最后留下的是原来的第几号的那位. 输入 初始人数n 输出 最后一人的初始编号 样 ...
- (C语言)有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。
题目描述 有n人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位. 输入 初始人数n 输出 最后一人的初始编号 样例输入 3 样例输出 2 ...
- 详细讲解C语言经典例题:有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子, 问最后留下的是原来第几号的那位
有n个人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子, 问最后留下的是原来第几号的那位 如题,相信很多人都和我一样,当时看到根本不知道从何下手.那么我们先不看代码,画图 ...
- 有n个人围一圈,顺序排号,报号游戏
网上关于这个问题的解法已经有很多了,我现在是把网上的一些加上自己的理解,套用为一个固定写法,当然理解最重要啦! 我也是最近才开始学指针的,欢迎大家留言学习讨论 报数游戏的普遍说法: 有10个人围一圈, ...
- 1056: 约瑟夫问题【n人围成一圈,报数为3的人退出圈子,问最后留下的人原来的编号。】
Description 有n人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位. Input 初始人数n Output 最后一人的初始编号 ...
最新文章
- PCL:点云中的超体素数据
- 嵌入式系统在井下煤炭井下监控系统的应用
- 和lock一起学beego 博客系统开发为例(五)
- oracle ctl file constantnull,Oracle 的一些导入和导出方法
- oracle 删除表中重复记录,并保留一条
- 替换string中的部分字符
- iPhone XI Max带壳渲染图曝光:依然刘海屏 后置“浴霸”三摄实锤
- 大数据平台的整体架构由哪些组成
- 计算机联锁人工进路的办理,计算机联锁与6502
- wordpress搜索ajax,基于wordpress的ajax写法详解
- Cocos Creator
- 华为模拟器dhcp中继
- 浅层神经网络回归预测,基于MATLAB。 模型包括BPNN,极限学习机(ELM)和Elman网络
- 实现微信小程序picker 省市区 自定义数据 支持三级联动
- 科罗拉多矿业大学计算机科学专业,科罗拉多矿业大学有哪些专业_专业排名(TFE美国大学排名)...
- 皇室战争服务器维护,皇室战争攻略_电塔秒苍蝇!皇室战争10月平衡性调整最大赢家_游戏手机游戏-中关村在线...
- MATLAB画图使用不同的颜色
- PTA 查询选修了2门以上课程的学生学号和平均成绩。分数 3
- 古代中国使用计算机工具叫什么,古代四大计时工具是什么
- bnd workspace属性文件
热门文章
- 如何保证投票公平_举办微信投票活动如何确保公平、公正
- C 字符串转大小写strupr , strlowr, tolower, toupper
- 【PAT乙级】题解-1014 福尔摩斯的约会
- 夏时制 windows/linux
- 手动输入计算机在线,2001计算机英文录入反复练习
- 教练的品质:风林火山
- E.04.01 ‘A Very Big Problem.’ Giant Ship in the Suez Remains Stuck.
- 两台或多台PC共享上网实现的方法
- 电影售票系统遇到的问题
- #uni-app# u-avatar-cropper实现选择图片裁剪,设置用户头像uview (附源码)