結果

問題 No.939 and or
ユーザー hiromi_ayase
提出日時 2019-12-03 22:23:40
言語 Java8
(openjdk 1.8.0.222)
結果
AC  
実行時間 122 ms
コード長 2,839 Byte
コンパイル時間 2,345 ms
使用メモリ 19,616 KB
最終ジャッジ日時 2019-12-03 22:23:47

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
1_sample1 AC 113 ms
19,616 KB
2_sample2 AC 96 ms
19,608 KB
3 AC 97 ms
19,612 KB
4 AC 97 ms
19,612 KB
5 AC 99 ms
19,612 KB
6 AC 106 ms
19,608 KB
7 AC 101 ms
19,608 KB
8 AC 100 ms
19,608 KB
9 AC 104 ms
19,608 KB
10 AC 110 ms
19,604 KB
11 AC 114 ms
19,608 KB
12 AC 113 ms
19,616 KB
13 AC 113 ms
19,604 KB
14 AC 101 ms
19,612 KB
15 AC 104 ms
19,608 KB
16 AC 105 ms
19,612 KB
17 AC 104 ms
19,612 KB
18 AC 108 ms
19,600 KB
19 AC 98 ms
19,612 KB
20 AC 100 ms
19,612 KB
21 AC 114 ms
19,616 KB
22 AC 115 ms
19,616 KB
23 AC 95 ms
19,612 KB
24 AC 99 ms
19,608 KB
25 AC 99 ms
19,612 KB
26 AC 100 ms
19,604 KB
27 AC 99 ms
19,616 KB
28 AC 93 ms
19,612 KB
29 AC 97 ms
19,608 KB
30 AC 102 ms
19,616 KB
31 AC 98 ms
19,608 KB
32 AC 122 ms
19,608 KB
テストケース一括ダウンロード

ソースコード

diff #
public class Main {

  private static void solve() {
    int a = ni();
    int b = ni();
    // 0:x=y 1:x<y
    long[] dp = new long[2];
    dp[0] = 1;
    for (int i = 31; i >= 0; i--) {
      int dand = (a >> i) & 1;
      int dor = (b >> i) & 1;

      if (dand == 1 && dor == 0) {
        System.out.println(0);
        return;
      } else if (dand == 0 && dor == 1) {
        dp[1] *= 2;
        dp[1] += dp[0];
        dp[0] = 0;
      }
    }

    System.out.println(dp[0] + dp[1]);


  }

  public static void main(String[] args) {
    new Thread(null, new Runnable() {
      @Override
      public void run() {
        long start = System.currentTimeMillis();
        String debug = args.length > 0 ? args[0] : null;
        if (debug != null) {
          try {
            is = java.nio.file.Files.newInputStream(java.nio.file.Paths.get(debug));
          } catch (Exception e) {
            throw new RuntimeException(e);
          }
        }
        reader = new java.io.BufferedReader(new java.io.InputStreamReader(is), 32768);
        solve();
        out.flush();
        tr((System.currentTimeMillis() - start) + "ms");
      }
    }, "", 64000000).start();
  }

  private static java.io.InputStream is = System.in;
  private static java.io.PrintWriter out = new java.io.PrintWriter(System.out);
  private static java.util.StringTokenizer tokenizer = null;
  private static java.io.BufferedReader reader;

  public static String next() {
    while (tokenizer == null || !tokenizer.hasMoreTokens()) {
      try {
        tokenizer = new java.util.StringTokenizer(reader.readLine());
      } catch (Exception e) {
        throw new RuntimeException(e);
      }
    }
    return tokenizer.nextToken();
  }

  private static double nd() {
    return Double.parseDouble(next());
  }

  private static long nl() {
    return Long.parseLong(next());
  }

  private static int[] na(int n) {
    int[] a = new int[n];
    for (int i = 0; i < n; i++)
      a[i] = ni();
    return a;
  }

  private static char[] ns() {
    return next().toCharArray();
  }

  private static long[] nal(int n) {
    long[] a = new long[n];
    for (int i = 0; i < n; i++)
      a[i] = nl();
    return a;
  }

  private static int[][] ntable(int n, int m) {
    int[][] table = new int[n][m];
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) {
        table[i][j] = ni();
      }
    }
    return table;
  }

  private static int[][] nlist(int n, int m) {
    int[][] table = new int[m][n];
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) {
        table[j][i] = ni();
      }
    }
    return table;
  }

  private static int ni() {
    return Integer.parseInt(next());
  }

  private static void tr(Object... o) {
    if (is != System.in)
      System.out.println(java.util.Arrays.deepToString(o));
  }
}

0