結果

問題 No.862 XORでX
ユーザー tenten
提出日時 2021-03-02 12:08:02
言語 Java
(openjdk 23)
結果
WA  
実行時間 -
コード長 2,358 bytes
コンパイル時間 2,456 ms
コンパイル使用メモリ 79,488 KB
実行使用メモリ 63,360 KB
最終ジャッジ日時 2024-10-03 01:40:32
合計ジャッジ時間 12,269 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 21 WA * 7
権限があれば一括ダウンロードができます

ソースコード

diff #

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int x = sc.nextInt();
        HashSet<Integer> used = new HashSet<>();
        ArrayList<Integer> ans = new ArrayList<>();
        int mod = (n - 1) % 4;
        if (mod == 0) {
            used.add(x);
            ans.add(x);
        } else if (mod == 1) {
            if (x == 1) {
                used.add(x ^ 2);
                ans.add(x ^ 2);
                used.add(2);
                ans.add(2);
            } else {
                used.add(x ^ 1);
                ans.add(x ^ 1);
                used.add(1);
                ans.add(1);
            }
        } else if (mod == 2) {
            if (x == 1) {
                used.add(100002);
                ans.add(100002);
                used.add(100001);
                ans.add(100001);
                used.add(2);
                ans.add(2);
            } else {
                used.add(x ^ 1);
                ans.add(x ^ 1);
                used.add(100002);
                ans.add(100002);
                used.add(100003);
                ans.add(100003);
            }
        } else {
            if (x == 1) {
                used.add(100001);
                ans.add(100001);
                used.add(100002);
                ans.add(100002);
                used.add(4);
                ans.add(4);
                used.add(6);
                ans.add(6);
            } else {
                used.add(100003);
                ans.add(100003);
                used.add(100002);
                ans.add(100002);
                used.add(x);
                ans.add(x);
                used.add(1);
                ans.add(1);
            }
        }
        int idx = 1;
        while (ans.size() < n) {
            int base = (idx << 2);
            idx++;
            if (used.contains(base) || used.contains(base + 1) || used.contains(base + 2) || used.contains(base + 3)) {
                continue;
            }
            ans.add(base);
            ans.add(base + 1);
            ans.add(base + 2);
            ans.add(base + 3);
        }
        StringBuilder sb = new StringBuilder();
        for (int y : ans) {
            sb.append(y).append("\n");
        }
        System.out.print(sb);
    }
}
0