解题思路:约瑟夫环问题,直接采用约瑟夫环的数学公式
注意事项:注意约瑟夫环数学公式输出s的时候输出的是最后出列的人最初位置,这里需要输出最后留下的人的最初位置,所以需要输出s+1
参考代码:
import java.util.Scanner;
//约瑟夫环
//有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int s = 0;
int m = 3;
// n参与人数,m出列位置
for (int i=2; i<=n; i++)
{
s=(s+m)%i;
}
System.out.println(s+1);
//当ti输出s的时候输出的是最后出列的人最初位置,这里需要输出最后留下的人的最初位置
//1,2,3 3个人最后留下的是2,最后出列的是1,所以这里要输出s+1
}
}
0.0分
2 人评分
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:600 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:575 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:524 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:1196 |
用筛法求之N内的素数。 (C++代码)浏览:693 |
蚂蚁感冒 (C语言代码)浏览:1335 |
字符串的输入输出处理 (C语言代码)浏览:1016 |
C语言训练-8除不尽的数 (C语言代码)浏览:1402 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:668 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:559 |