题解 | #D 幻兽帕鲁#

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);
        }
    }
全部评论
例子中操作后的3和5位置好像写反了,应该是1537╰(*°▽°*)╯
1 回复 分享
发布于 2024-05-11 13:05 浙江
大佬,可不可以说说怎么打表的啊
点赞 回复 分享
发布于 2024-05-16 20:27 河南
这个排序是咋排的呀请问
点赞 回复 分享
发布于 2024-05-11 23:07 吉林

相关推荐

七牛云头号黑子:人家是过度包装被看出来没过简历,你是包都不包啊兄弟
点赞 评论 收藏
分享
评论
9
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务