結果

問題 No.862 XORでX
ユーザー tentententen
提出日時 2021-03-02 12:08:02
言語 Java21
(openjdk 21)
結果
WA  
実行時間 -
コード長 2,358 bytes
コンパイル時間 2,449 ms
コンパイル使用メモリ 80,156 KB
実行使用メモリ 62,260 KB
最終ジャッジ日時 2024-04-14 04:33:20
合計ジャッジ時間 12,182 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 131 ms
54,276 KB
testcase_01 AC 131 ms
53,908 KB
testcase_02 AC 132 ms
54,288 KB
testcase_03 AC 139 ms
53,888 KB
testcase_04 AC 139 ms
54,580 KB
testcase_05 AC 141 ms
54,244 KB
testcase_06 AC 130 ms
54,160 KB
testcase_07 AC 131 ms
54,140 KB
testcase_08 AC 158 ms
54,068 KB
testcase_09 AC 170 ms
54,296 KB
testcase_10 AC 164 ms
54,476 KB
testcase_11 AC 164 ms
54,640 KB
testcase_12 AC 133 ms
54,008 KB
testcase_13 AC 133 ms
54,000 KB
testcase_14 AC 135 ms
54,368 KB
testcase_15 AC 133 ms
54,352 KB
testcase_16 AC 243 ms
61,280 KB
testcase_17 AC 246 ms
62,260 KB
testcase_18 AC 249 ms
62,020 KB
testcase_19 AC 237 ms
62,068 KB
testcase_20 WA -
testcase_21 WA -
testcase_22 WA -
testcase_23 WA -
testcase_24 AC 256 ms
61,460 KB
testcase_25 AC 247 ms
61,552 KB
testcase_26 AC 246 ms
61,684 KB
testcase_27 WA -
testcase_28 AC 246 ms
62,016 KB
testcase_29 AC 248 ms
61,688 KB
testcase_30 WA -
testcase_31 WA -
権限があれば一括ダウンロードができます

ソースコード

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