一、题目:
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
二、源代码:
import java.util.Scanner;
public class yuesefuhuan {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int []arr=new int[n];
int i,p=0,q=n;//q用来对数组中不为0的元素进行计数,初值为n
for(i=0;i<n;i++)
arr[i]=i+1;//给数组赋值为1到n
for(i=0;;i++){
if(i==n) i=0;//i每次从0累加到n的时候,i再从0重新开始计数
if(arr[i]!=0) p++;//如果当前元素的值不为0,则p值加1
if(p==3){//当p的计数值等于3时,则将当前元素的值置为0,同时p值置为0,重新开始计数,并且q值减1,表示当前数组中非0的元素个数少1
arr[i]=0;
p=0;
q--;
}
if(q==1) break;//当数组中只剩一个非0元素的时候,则跳出当前循环
}
for(i=0;i<n;i++){//再重新遍历数组,找到数组中不为0的元素,然后输出。
if(arr[i]!=0){
System.out.println("i=="+i+" arr[i]=="+arr[i]);
break;
}
}
}
}