解题思路:约瑟夫环问题,直接采用约瑟夫环的数学公式
注意事项:注意约瑟夫环数学公式输出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语言训练-计算1977!* (C++代码)浏览:850 |
C语言程序设计教程(第三版)课后习题9.8 (Java代码)浏览:1638 |
Pascal三角 (C语言代码)格式错误浏览:520 |
C语言训练-大、小写问题 (C语言代码)浏览:612 |
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:620 |
Tom数 (C语言代码)浏览:725 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:509 |
Tom数 (C语言代码)浏览:555 |
C二级辅导-等差数列 (C语言代码)浏览:810 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:680 |