CF2086E Zebra-like Numbers
题目描述
我们称一个正整数为斑马数(zebra-like),如果它的二进制表示从最高有效位开始是交替的比特位,并且最低有效位等于 $1$。例如,数字 $1$、$5$ 和 $21$ 都是斑马数,因为它们的二进制表示 $1$、$101$ 和 $10101$ 满足要求,而数字 $10$ 不是斑马数,因为它的二进制表示 $1010$ 的最低有效位是 $0$。
我们定义一个正整数 $e$ 的斑马值为最小的整数 $p$,使得 $e$ 可以表示为 $p$ 个斑马数(可以相同也可以不同)的和。
给定三个整数 $l$、$r$ 和 $k$,计算满足 $l \le x \le r$ 且 $x$ 的斑马值等于 $k$ 的整数 $x$ 的数量。
输入格式
每个测试包含多个测试用例。第一行包含一个整数 $t$($1 \le t \le 100$)——测试用例的数量。接下来是测试用例的描述。
每个测试用例的唯一一行包含三个整数 $l$、$r$($1 \le l \le r \le 10^{18}$)和 $k$($1 \le k \le 10^{18}$)。
输出格式
对于每个测试用例,输出一个整数——区间 $[l, r]$ 内斑马值为 $k$ 的整数的数量。
说明/提示
- 在第一个测试用例中,有 $13$ 个符合条件的数字:$3, 7, 11, 15, 23, 27, 31, 43, 47, 63, 87, 91, 95$。每个数字都可以表示为 $3$ 个斑马数的和。
- 在第二个测试用例中,数字 $1$ 的斑马值为 $1$,因此输出 $1$。
- 在第四个测试用例中,区间 $[2, 10]$ 内没有数字的斑马值为 $100$,因此输出 $0$。
翻译由 DeepSeek V3 完成