D 幻兽帕鲁

打表发现, x位置操作后数字变为reverse(x)

例如: n=3

初始:
   0    1    2    3    4    5    6    7 

(000)(001)(010)(011)(100)(101)(110)(111)

操作后:
   0    4    2    6    1    5    3    7

(000)(100)(010)(110)(001)(101)(011)(111)

所以只需要翻转x的二进制位即可

 public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(), m = sc.nextInt();

        for (int i = 0; i < m; i++) {
            long x = sc.nextLong();
            long ans = 0;
            for (int k = 0; k < n; k++) {
                long b = x % 2;
                x /= 2;
                ans += b * (1L << (n - k - 1));
            }
            System.out.println(ans);
        }
    }