(int[] arr, int len)
| 76 | } |
| 77 | |
| 78 | static int get11Perm(int[] arr, int len) { |
| 79 | int idx = 0; |
| 80 | long val = 0xa9876543210L; |
| 81 | for (int i = 0; i < len - 1; i++) { |
| 82 | int v = arr[i] << 2; |
| 83 | idx = (int) ((len - i) * idx + ((val >> v) & 0xf)); |
| 84 | val -= 0x11111111110L << v; |
| 85 | } |
| 86 | return idx; |
| 87 | } |
| 88 | |
| 89 | public static void circle(int[] arr, int a, int b, int c, int d) { |
| 90 | int temp = arr[a]; arr[a] = arr[b]; arr[b] = arr[c]; arr[c] = arr[d]; arr[d] = temp; |