题目描述

有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的人退出圈子,问最后留下的是原来的第几号的那位。相关推荐

  1. 题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位. 提示:用数组完成

    题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位. 提示:用数组完成 #include <stdio.h> in ...

  2. 有n个人围成一圈 顺序排号 java_java基础编程题有n个人围成一圈顺序排号

    下面给大家带来的这道编程题可以算得上是一道非常基础的java编程题目,刚刚开始接触java编程的小伙伴一起来看看具体的题目以及解题方法吧. 下面是具体的题目,题目还是非常的简单的. 一.题目 有n个人 ...

  3. c/c++ 有n个人围成一圈, 顺序排号。从第1个人开始报数(从1~3报数), 凡报到3的人退出圈子, 问最后留下的人原来排在第几号。

    解题思路的重要性显现出来了 比如这个题 n个人肯定是要用数组 毋庸置疑 那么报数怎么实现呢 可以设置一个循环变量 让他从0开始循环 当等于3 的时候 就归零 还有 n个人 肯定需要很多圈报数 这个很多 ...

  4. 有n个人围成一圈 顺序排号 java_java有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出...

    public class Test { public static void main(String[] args) { // 测试数据 ArrayList list = new ArrayList( ...

  5. ACMNO.38 C语言-报数 有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。

    题目描述 有n人围成一圈,顺序排号. 从第1个人开始报数(从1到3报数),凡报到3的人退出圈子.`在这里插入代码片` 问最后留下的是原来的第几号的那位. 输入 初始人数n 输出 最后一人的初始编号 样 ...

  6. (C语言)有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。

    题目描述 有n人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位. 输入 初始人数n 输出 最后一人的初始编号 样例输入 3 样例输出 2 ...

  7. 详细讲解C语言经典例题:有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子, 问最后留下的是原来第几号的那位

    有n个人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子, 问最后留下的是原来第几号的那位 如题,相信很多人都和我一样,当时看到根本不知道从何下手.那么我们先不看代码,画图 ...

  8. 有n个人围一圈,顺序排号,报号游戏

    网上关于这个问题的解法已经有很多了,我现在是把网上的一些加上自己的理解,套用为一个固定写法,当然理解最重要啦! 我也是最近才开始学指针的,欢迎大家留言学习讨论 报数游戏的普遍说法: 有10个人围一圈, ...

  9. 1056: 约瑟夫问题【n人围成一圈,报数为3的人退出圈子,问最后留下的人原来的编号。】

    Description 有n人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位. Input 初始人数n Output 最后一人的初始编号 ...

最新文章

  1. PCL:点云中的超体素数据
  2. 嵌入式系统在井下煤炭井下监控系统的应用
  3. 和lock一起学beego 博客系统开发为例(五)
  4. oracle ctl file constantnull,Oracle 的一些导入和导出方法
  5. oracle 删除表中重复记录,并保留一条
  6. 替换string中的部分字符
  7. iPhone XI Max带壳渲染图曝光:依然刘海屏 后置“浴霸”三摄实锤
  8. 大数据平台的整体架构由哪些组成
  9. 计算机联锁人工进路的办理,计算机联锁与6502
  10. wordpress搜索ajax,基于wordpress的ajax写法详解
  11. Cocos Creator
  12. 华为模拟器dhcp中继
  13. 浅层神经网络回归预测,基于MATLAB。 模型包括BPNN,极限学习机(ELM)和Elman网络
  14. 实现微信小程序picker 省市区 自定义数据 支持三级联动
  15. 科罗拉多矿业大学计算机科学专业,科罗拉多矿业大学有哪些专业_专业排名(TFE美国大学排名)...
  16. 皇室战争服务器维护,皇室战争攻略_电塔秒苍蝇!皇室战争10月平衡性调整最大赢家_游戏手机游戏-中关村在线...
  17. MATLAB画图使用不同的颜色
  18. PTA 查询选修了2门以上课程的学生学号和平均成绩。分数 3
  19. 古代中国使用计算机工具叫什么,古代四大计时工具是什么
  20. bnd workspace属性文件

热门文章

  1. 如何保证投票公平_举办微信投票活动如何确保公平、公正
  2. C 字符串转大小写strupr , strlowr, tolower, toupper
  3. 【PAT乙级】题解-1014 福尔摩斯的约会
  4. 夏时制 windows/linux
  5. 手动输入计算机在线,2001计算机英文录入反复练习
  6. 教练的品质:风林火山
  7. E.04.01 ‘A Very Big Problem.’ Giant Ship in the Suez Remains Stuck.
  8. 两台或多台PC共享上网实现的方法
  9. 电影售票系统遇到的问题
  10. #uni-app# u-avatar-cropper实现选择图片裁剪,设置用户头像uview (附源码)