题目背景
それぞれの好きを守るため / 为了保护各自的喜爱之物
君と防空壕で呼吸する / 与你在防空壕中一同呼吸
题目描述
给定三个整数 $n,s,t$,其中 $0 \le s,t \lt 2^n$。
你可以进行若干次操作。每次操作,你可以选择一个非负整数 $x$ 并把 $s$ 的值修改为 $x$,但有如下要求:
- 必须满足 $x< 2^n$;
- 必须满足 $s\lor x=2^n-1$,其中 $\lor$ 为按位或运算;
- 你需要花费 $s\oplus x$ 的代价,其中 $\oplus$ 为按位异或运算。
你需要求出使 $s=t$ 所需代价之和的最小值。可以证明一定可以使 $s$ 与 $t$ 相等。
输入格式
本题有多组测试数据。
输入的第一行包含一个正整数 $T$,表示测试数据组数。
接下来依次输入每组测试数据。对于每组测试数据,输入共一行,包含三个整数 $n,s,t$。
输出格式
对于每组测试数据,输出一行一个整数,表示使 $s=t$ 所需代价之和的最小值。
样例 1 输入
3 2 1 2 3 1 1 5 1 4
样例 1 输出
3 0 57
样例 1 解释
对于第 $1$ 组测试数据,由于 $1 \cup 2 = 3$,所以可以直接将 $s$ 的值从 $1$ 修改为 $2$,此时的代价为 $1 \oplus 2$,即 $3$。可以证明使 $s=t$ 所需代价之和的最小值为 $3$。
对于第 $2$ 组测试数据,不需要进行操作即可满足 $s=t$。
数据范围
对于所有测试数据,保证:
- $1 \le T \le 100$;
- $1 \le n \le 30$;
- $0 \le s,t \lt 2^n$。
本题采用捆绑测试。
- Subtask 1(12 points):$s=t$。
- Subtask 2(15 points):$n=1$。
- Subtask 3(20 points):$s+t=2^n-1$。
- Subtask 4(10 points):$t=2^n-1$。
- Subtask 5(18 points):$t=0$。
- Subtask 6(25 points):无特殊限制。