解题思路:约瑟夫环问题,直接采用约瑟夫环的数学公式
注意事项:注意约瑟夫环数学公式输出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语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:916 |
2005年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:628 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:657 |
简单的a+b (C语言代码)浏览:827 |
printf基础练习2 (C语言代码)浏览:605 |
用筛法求之N内的素数。 (C语言代码)浏览:1386 |
WU-陶陶摘苹果2 (C++代码)浏览:1018 |
简单的a+b (C语言代码)浏览:878 |
printf基础练习2 (C语言代码)浏览:653 |
矩阵加法 (C语言代码)浏览:1768 |