题目描述
NiroBC 姐姐脑洞了两个数字 $x$ 和 $y$ ,它们满足 $x \lor y = T$ ,且 $L_x \le x \le R_x, L_y \le y \le R_y$ , NiroBC 姐姐想知道 $x \land y$ 有多少种不同的取值,若有多组 $(x, y)$ 的 $x \land y$ 值相同,则只算一次。
(其中 $\lor$ 表示按位取或,C/C++
中写作|
,Pascal
中写作or
)
(其中 $\land$ 表示按位取与,C/C++
中写作&
,Pascal
中写作and
)
输入格式
一行,五个非负整数 $T, L_x, R_x, L_y, R_y$ 。
输出格式
一行,一个整数,答案。
样例
input
11 3 10 8 13
output
7
符合条件的 $(x, y)$ 有:(二进制表示)
$x$ | $y$ | $x\land y$ |
---|---|---|
0011 | 1000 | 0000 |
0011 | 1001 | 0001 |
0011 | 1010 | 0010 |
0011 | 1011 | 0011 |
1000 | 1011 | 1000 |
1001 | 1010 | 1000 |
1001 | 1011 | 1001 |
1010 | 1001 | 1000 |
1010 | 1011 | 1010 |
$x \land y$ 不重复的有 $7$ 种。
数据范围与提示
对于所有数据, $0 \le T, L_x, R_x, L_y, R_y < 2^{60}$ , $L_x \le R_x$,$L_y \le R_y$ 。
本题采用打包测试。
各个 Subtask 的特殊限制如下,不填代表该项无特殊限制。
Subtask 编号 | $T$ | $L_x$ | $L_y$ | $R_x$ | $R_y$ | 其他限制 | 该 Subtask 分值 |
---|---|---|---|---|---|---|---|
0 | $ < 2^{10} $ | $ < 2^{10} $ | $ < 2^{10} $ | $ < 2^{10}$ | $ < 2^{10} $ | 13 | |
1 | $=0$ | $=0$ | 15 | ||||
2 | $T$ 的二进制表示下 $1$ 的个数不超过 $15$ | 25 | |||||
3 | 47 |