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);
}
}