※. 배열 원소들은 겹치지 않는다.
※. 1부터 시작했을 때 n이 홀수라면 (n = 7)
홀수idx 1 3 5 7
짝수idx 2 4 6
※. n이 짝수라면(n = 8)
홀수idx 1 3 5 7
짝수idx 2 4 6 8
※. 서로 다른 a,b를 xor했을 때 같게 만드는 방법은 (xor ⊕)
a ⊕ ((2 ^ n) + a) ⊕ ((2 ^ n) + (2 ^ n-1)) = 2 ^ n - 1
b ⊕ ((2 ^ n-1) + b) = 2 ^ n-1
※. n, n-1, n-2 3개의 원소를 제외하고 n-3개의 수를 출력한다.(2^n-1 보다 작아야함)
제외한 3개의 원소를 위와 같이 넣는다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
//4
public class Main {
public static void main(String arg[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
while(T --> 0) {
int n = Integer.parseInt(br.readLine());
int case1 = 0;
int case2 = 0;
for(int i = 1; i < n-2; i++) {
sb.append(i+" ");
if(i%2 == 0) {
case1 ^= i;
}
else
case2 ^= i;
}
if(n % 2 == 0) {
int case3 = (1 << 30);
int case4 = (1 << 29);
sb.append((case3+case1)+" ");
sb.append((case4+case2)+" ");
sb.append((case3+(1<<29))+"\n");
}
else {
int case3 = (1 << 30);
int case4 = (1 << 29);
sb.append((case3+case2)+" ");
sb.append((case4+case1)+" ");
sb.append((case3+(1<<29))+"\n");
}
}
System.out.println(sb);
}
}
'코드포스' 카테고리의 다른 글
[Codeforces Round #827 (Div. 4)] F. Smaller (0) | 2022.10.14 |
---|---|
[Codeforces Round #827 (Div. 4)] D. Coprime (0) | 2022.10.14 |
[Codeforces Round #817 (Div. 4)] F. L-shapes (0) | 2022.10.06 |
[Codeforces Round #817 (Div. 4)] E. Counting Rectangles (0) | 2022.09.05 |
[Codeforces Round #817 (Div. 4)] D. Line (0) | 2022.08.31 |