有88个人围成一圈报数,报到3的倍数就退出,问最后留下人的位置? 5C

求大神求解。。。。。。有88个人围成一圈报数,报到3的倍数就退出,问最后留下人的位置?-java

3个回答

这个叫做约瑟夫环问题,题目都是类似的,只是人数、倍数换一换。
https://www.cnblogs.com/liangstudyhome/p/4582756.html
https://www.cnblogs.com/timeng/p/3335162.html

qq_34328582
搬代码的科比 我采用这种方式 可是最后一组数是不会去遍历的。结果接找不到。
一年多之前 回复

应该是59,用88除3再用88减去所得的商

数据范围这么小,打个暴力即可知道是59.或者用数学的方法做也行。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
一群人围成一圈报数,3倍数的就退出,面试题
这个题目指的是一群人,围成一个圈,然后一个接一个的报数,当数到3或者3的倍数时候就退出,知道最后一个人。 距离当人数为30的时候: public class CycleTest {          public static void main(String[] args) {           // TODO Auto-generated method stub
n个人围成一圈报数,从1开始,凡是报到3的退出,最后留下的是几号?
题目:n个人围成一圈报数,从1开始,凡是报到3的推出,最后留下的是几号? 普通代码: public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("请输入总人数:"); int p = input.nextInt(); //初始化人数组 ...
N个人围成一圈报数,报到某一个数的就出局,问你最后剩下来的人的号码?
记得在哪本书上看过这个程序的算法,但怎么都想不起来了,哪位大虾能帮忙给出正确的程序?谢谢!
n个人围成一圈报数,报到某一个数的就出局,问你最后剩下来的人的号码?
有n个人围成一圈,顺序编号。从第一个人开始报数,凡报到m的人退出圈子,问最后剩下的人是多少号 ?在网上找了 几个典型的答案 但是没看懂是什么意思 哪位能帮忙解释解释啊 谢谢了。rn public static int removeNM(int n, int m) rn LinkedList ll = new LinkedList(); rn for(int i = 0; i < n; i++) rn ll.add(new Integer(i+1)); rn [color=#FF0000]int removed = -1; [/color] rn while(ll.size() > 1) rn [color=#FF0000]removed = (removed + m) % ll.size();[/color] rn ll.remove(removed--); rn rn return ((Integer)ll.get(0)).intValue(); rn rn public static void main(String[] args) rn System.out.println(removeNM(3,2)); rn rn
n个人围成一圈报数出列
题目:n个人围成一圈,并依次编号为1,2,3,……,n,并以m数顺序报数,报到m时,该人出列,然后从出列的下一位开始重新报数,以此类推,编写代码依次输出出列人编号的顺序以及最后留在圈内的人的编号。 思路:可以使用结构体来为每个人编号和确认下一位的编号,采用循环依次数数,每次数数判断下一位是否已经出列,是则选择跳过。数到m时,输出当前人的编号,同时将该人编号清零,作为已经出列的标志。最后输
N个人围成一圈报数淘汰问题
C语言——N个人围成一圈报数淘汰问题 有13个人围成一圈(编号为1~13),从第 1个人开始从 1报数, 凡报到 5的倍数的人离开圈子,然后再数下去,直到最后只剩下一个人为止。 问此人原来的位置是多少号? #include &lt;stdio.h&gt; #define N 13 struct mystruct { int num; int flag; }; typedef struct m...
n个人围成一圈,顺序排号,从第1个人开始报数(1到3报数),凡报到3的人退出圈子,问最后留下的是原来几号
n个人围成一圈,顺序排号,从第1个人开始报数(1到3报数),凡报到3的人退出圈子,问最后留下的是原来几号
n个人围成一圈,第一个开始报数(1-3),凡报数3退出。问最后留下的人是原来第几号?
#include int main() {    int i=0,j=0,k=0,n,x;    int a[100];    printf("please input a nu :");    scanf("%d",&n);    for (x=0 ; x    {       a[x] = x+1;    }    while (n-k > 1)    {    
报到3的倍数的人退出
题目:rn17个人围成圈,编号为1~17,从第1号开始报数,报到3的倍数的人离开,一直数下去,直到最后只剩下1人。求此人的编号。rn我的程序:(先试5个人的,正确结果应是:00040,我却得到:02040)rn#include rnvoid output(int a[],int n)rnrn rn int i;rn for(i=0;i1)rn rn for(i=0;i
有n个人围成一圈,顺序排号。从第一个人开始报数(1到3),凡报到3的人退出,问最后留下来的是几
include   #define N    50 // 排队人数(可任意更改)   #define CAL   3 //凡报3的人出列(可任意更改)   //下面是排队编号函数:从h 开始的n个人依次编号1到n   void   stdline(int *h,int n)   {   int i;   for(i=1;i   }   /*下面函数表示从
多人围成一圈报数问题
题目出自谭浩强C语言程序设计第四版 题目是有n个人围成一圈报数,顺序排号,从第一个人开始报数(从1到3),如果报道三则退出,问最后留下来的是原来第几号的那位 思路:首先为n个数设置一个编号,目的是最后结果知道是开始的几号,然后如果要解决围成圈报数的问题,最好的办法就是建立一个变量,使该变量递增,在某些条件下,对该变量进行重置,在while条件下保证他的连续性,这样就可以保证在第一遍循环
n人围成一圈报数
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位 思路:用一个数组存这n个人,里面的初始状态全设为1,表示都还在圈子里面。 然后用q来记录报的号,因为每次报号报到3的人就得退出圈子,用j来表示圈子内剩余的人数。 每当有人报到3时,j-1,同时将数组中该元素的值标记为0,q清0。 这样while循环结
有n个人围成一圈,顺序排号,从第一个人开始报数(1-3报数),凡是报数为3的人退出圈子,问最后留下的人原来的编号是多少?
有n个人围成一圈,顺序排号,从第一个人开始报数(1-3报数),凡是报数为3的人退出圈子,问最后留下的人原来的编号是多少? n=int(input(“请输入总人数(从一个报数开始以1编号,逐次递增):”)) a=list(range(1,n+1)) while len(a)&amp;amp;amp;amp;gt;2: c = len(a) % 3 b = [] if c == 0: for i in range(1, len(a...
有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,最后是谁
#include&amp;lt;stdio.h&amp;gt; int main() { int n; scanf(&quot;%d&quot;,&amp;amp;n); int a[n]; int i,j,h,f=0; for(i=0;i&amp;lt;n;i++) { a[i]=i+1; } j=0; for(i=0;
有n个人围成一圈,顺序排号。从第一个人开始报数,凡报到3的人退出圈子,问最后留下的是几号?
我的问题是:我弄不明白while循环的条件为什么是圈外人数rn#define max 15rnint main()rnrn int i,k,n,m,num[max],*p;rn printf("输入开始报数时总人数:");rn scanf("%d",&n);//开始报数前的人数。rn p=num;//指针指向数组第一位num[0]rn for(i=0;i
文章标题n个人围成一圈,顺序排号。从第一个人开始报数(1~3),凡报到3的人退出圈子,问最后留下来的是原来几号的那位?
第一封技术博客,从小白开始,一同成长!审题:围成一圈报数,固当第一次报到3的时候,就应该退出这个圈子,不在进行下面的报数,对计算机而言,就是跳过这个“喊出3的人” 接着从“1,2”开始。怎么跳过呢?给这个是“3”的人标记,让计算机知道有了这个标记之后,下面的人要从“1”开始喊起,直到又遇见了“3”,固应该添加一个循环。随着“3”的不断被标记,没有被标记的越来越少,那没被标记的“3”剩下多少算合适呢?
C++,n个人围成一圈,从第一个人开始报数……
1、2、3 凡报到3的退出圈子,问最后剩下的人在原来是第几号?
有n个人围成一圈,顺序排号,从第一个开始报数(从1到3),报到3的退出,问最后留下的是几号
#include   #define n 90 int main()     {    int a[100],i,quit_num,k;  for(i=0;i a[i]=i+1;  quit_num=0;      //初始化退出人数 i=0;  k=0;  while(quit_num { if(a[i]!=0)k++;  if(k==3)       //当报
五十道编程小题目 --- 37 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子 java
【程序37】  题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下 的是原来第几号的那位。  import java.util.Arrays; import java.util.Scanner; import net.mindview.util.Print; public class Test37 { publi
n个人围成一圈,凡报到3的倍数的人离开圈子,然后再数下去
n个人围成一圈(编号为1-n),从第1号的人开始从1报数,凡报到3的倍数的人离开圈子,然后再数下去,直到最后只剩一个人为止。问当n=17时,剩下的人是多少号 方法简介:将圈内人数看做一个List,去掉(index+1)是3的倍数的人,生成一个新的List 结构列子:比如List:1,2,3,4,5,6,7,8,9,10。 第一次生成的新List为:10、1、2、4、5、7、8 (3,6,9去
有100个人围成一个圈,从1开始报数,报到14的这个人就要退出
有100个人围成一个圈,从1开始报数,报到14的这个人就要退出,上传的资源位源码,运行测试没问题后上传
有N个人围成一圈,第一个人从1开始报数,报到M的人出列,求最后一个出列的人
在浏览面试题的时候发现了这道题目,百度后整理了一下思绪,觉得网上写的有点繁琐,将自己写的整理如下: package com.dewen.project; /** * 有N个人围成一圈,第一个人从1开始报数,报到M的人出列,求最后一个出列的人 * @author Dewen.Liu * */ public class Play { public void playGame(int
经典的报数退出问题,以前叫猴子选大王。n个人排成一圈报数,报到3的退出,循环直至最后一个,问,最后一个的原来号码是多少。
#include void main() { int i,k,m,n,num[50],*p; printf("input number of person: n="); scanf("%d",&n); p=num; for(i=0;i *(p+i)=i+1; i=0; k=0; m=0; while(m { if(*(p+i)!=0)//判断这个号(原来的序号)是否出局
50个人围成一圈数到3和3的倍数时出圈,问剩下的人是谁?
public static void main(String[] args) { long start = System.currentTimeMillis(); int size = 9999; int[] queue = new int[size]; for (int i = 0; i ; i++) { queue[i] = i + 1;
请教!!有n个人围成一圈,顺序编号。从第一个人开始报数,凡报到m的人退出圈子,问最后一个圈中的人的编号?
非常感谢大家的解答!!
python基础练习--报数报到3的退出
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。         1 # -*- coding:utf-8 -*- 2 3 if __name__ =='__main__': 4 nmax=50 5 n = input('请输入总人数:') 6 num=[] ...
关于n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子
看了几篇感觉关于它的算法难一点可以用指针或链表我写了简单的 #include&amp;amp;lt;stdio.h&amp;amp;gt; int main() { int k,i; int num=0,sum=0; bool key=true; scanf(&amp;quot;%d&amp;quot;,&amp;amp;amp;k); int a[k]; for(i=0;i&amp;amp;lt;k;i++) { a[i...
13个人围成一圈,从第一个人开始顺序报号1、2、3,凡是报到3的人退出圈子。最后留的人是几号?
#include #include struct person{ int num; struct person *next; }per[13]; struct person *creat(void){ struct person *p1=&per[0]; struct person *p2=&per[0]; int i,j=1; f
c语言编程:n个人围成一圈,从第一个开始报数
n个人围成一圈,从第一个开始报数,第m个退出,再从下一个开始重新报数,如此直到全部退出,求这n个人退出的顺序。
n人围成一圈报数问题
题目  有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数), 凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 思路:假如是8人,则需要一个数组将8个人的从1到8依次记下每人位数,还需要一个模拟报数口令的变量该变量最初为0,从1到2在到3,当该变量为3时,此时对应编号的人就要退出 那么第一次报数,3号退出,6号退出,有一个问题就是当这些人第一次报数到最后一个人之后,肯定还有
n个小孩围成一圈,顺序报号,从第一个人开始报数(从1报到5),凡是报到5的人退出圈子,问最后留下的小孩原来是几号
n个小孩围成一圈,顺序报号,从第一个人开始报数(从1报到5),凡是报到5的人退出圈子,问最后留下的小孩原来是几号 #include&amp;lt;stdio.h&amp;gt; int main() { int i,k,m,n,num[50],*p; printf(&quot;please input the total of number:&quot;); scanf(&quot;%d&quot;,&amp;amp;n); p=num; for(...
有n个人围成一圈,顺序编号,从第一个人开始报数,凡报到3的人出圈,编写程序,问最后留下的是原来第几号的那位?
1、         有n个人围成一圈,顺序编号,从第一个人开始报数,凡报到3的人出圈,编写程序,问最后留下的是原来第几号的那位? #include #include typedef struct Node{ int date; struct Node *next; }Node,*LinkList; LinkList createlist(int n){ int i; LinkL
标号1-n的n个人首尾相接,1到3报数,报到3的退出,求最后一个人的标号
闲来无聊,拿着这个算法题看了下典型的约瑟夫问题。这里使用最直白的方式来解答这道题:思路: 1.把所有人先放入数组中,size为n+1 2.当报到m的人,且dead不等于n-1时,此人退出游戏,这时候把数组中这个值置为0,报数从新开始 3.如果这个人报数等于m,并且已经死了n-1个人,说明当前这个人就是最后的一个public class demo{ public static void
有N个人围成一圈,从第一个人开始报数,数到3的人出列,直到最后一个人,问他的编号
一个经典的问题: 若干个人(设为N)围成一圈,每人依次编号,从第一个人开始报数,报到3的人出列,下一个人接着从1开始报数,周而复始,直到最后一人。 问最后这个人的编号是多少? 今天想着用Python把它实现出来,代码如下: ### 确定总人数 N = 4000 ### 声明一个数组,并赋值为True list = [] for i in range(N): list.appen...
50个人围成一圈数到3和3的倍数时出圈,问剩下的人是谁?在原来的位置是多少(简单易懂)
该题目的圈的元素个数是50个,每次数到3或3的倍数的时候,就把当前元素出圈,并且继续数数(比如叫6的那个数被删除后,下一个叫7),直到再遇到3的倍数。这里,如果下标从0开始,一直到一圈完成以后,它就会接到圈的首部,这应该如何处理呢?其实,最好的办法就是使用取余的办法,就可以始终得到3个倍数,无论它的倍数是多少,也不管它的元素个数是多少。 由于每次去掉元素以后,元素的个数会少一个,因此下一个3
有n个人围成一圈编号1~n,顺序排好,从第一个人开始1到3报数,凡是报到3的人退出圈子,C语言编程出圈顺序
//可以实现查找,还没有优化,有兴趣者可以试试 #include void out_loop(int n) {   int i = 0; int j; int flag = 1; int a[n]; int c = n; for(i = 0; i a[i] = i+1; } for(;;) {//死循环 for(i = 0; i if(a[
java编程题:50个人围成一圈数到3和3的倍数时出圈,问剩下的人是谁,在原来的位置是多少?
/** * java编程题:50个人围成一圈数到3和3的倍数时出圈,问剩下的人是谁,在原来的位置是多少? */ public class Test { public static void main(String[] args) { System.out.println("该数字原来的位置是:" + cycle(50, 3)); } /** * * @param
问:2.有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位. 提示:用数组完成
此题利用数组来解决。 从a[0]开始计数,每三个计数初始化一次,第三个数赋值为0(最后留下的那个不为0),每次计数到最后一个元素时,令i=0,又从头开始计数。 1 #include &amp;lt;stdio.h&amp;gt; 2 3 int main() 4 { 5 int n; 6 printf(&quot;please input a number:\n&quot;); 7...
N个人围成一圈,依次123报数,当报到3时小孩退列,而继续从1开始报数,直到最后一个小孩.问其序号
package baseExerciseProject; import java.util.Scanner; public class Call3AndOut { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int N = scanne...
有 n 个人围成一圈,顺序排号,从第一个开始报数(从 1 到 3 报数),凡是遇到 3 的人退出圈子,打印最后留下的人的号数。
参考程序:运行示例:
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法