1、有N个人围一圈依次报数,数到3的人出列,可以理解有人出列后,下一个从1开始继续报数,问当只剩一个人时他原来的位子在哪里?
1 public class CircleOut { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 // TODO Auto-generated method stub 8 9 final int N = 10; 10 int arr[] = new int[N]; 11 int count = 0, num = 0; 12 for (int i = 0; i < N; i++) { 13 arr[i] = i; 14 } 15 for (int i = 0; i < N; i = (i + 1) % N) { 16 if (arr[i] != -1) { 17 num++; 18 if (num % 3 == 0) { 19 count++; 20 if (count == N) { 21 System.out.println(arr[i] + " is last"); 22 break; 23 } 24 System.out.println(arr[i] + " out"); 25 arr[i] = -1; 26 } 27 } 28 } 29 } 30 31 }
未完待续。。