1 package FushiExam; 2 import java.util.*; 3 public class Text_37{ 4 public static void main(String[] args) { 5 /*有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡是报到3的人退出圈子,问最后留下的是原来第几号的那位。 6 * 7 */ 8 Scanner scan=new Scanner(System.in); 9 int n=scan.nextInt(); 10 int count=n,j=1,countnum=0;; 11 int[] arr=new int[n+1]; 12 for(int i=1;i<=n;i++) {//对数组中每个数赋值为非0数1,来标记报到为3的人 13 arr[i]=1; 14 } 15 while(count>1) {//while循环,直到留有一个人为止 16 if(arr[j]!=0) {//arr[j]=0即为退出圈子的人 17 countnum++;//用countnum来报数;1,2,3-----1,2,3------1,2,3 18 if(countnum==3) {//countnum==3即为报数为3的人,出局 19 count--;//count为游戏剩余人数,每出局一人,count值减一 20 arr[j]=0; 21 countnum=0;//countnum重置为0重新开始报数1,2,3 22 } 23 } 24 j++;//寻找下一个人 25 if(j==n+1) { 26 j=1;//当循环到最后一个人的时候,则回到开头继续重新寻找 27 } 28 29 } 30 for(int i=1;i<=n;i++) { 31 if(arr[i]!=0) 32 System.out.print("i:"+i); 33 } 34 35 } 36 }