#P1139. 函数

函数

题目描述

定义函数 f(x)f(x) 如下:

$$\begin{cases} f(1) = a \\ f(2) = b \\ f(x) = f(x - 1) \oplus f(x - 2) \end{cases} $$

这里的 xyx \oplus y 表示整数 xxyy按位异或运算。

现在给定四个整数 aabbllrr,你的任务是计算 llrr(包含两端)每个整数对应的函数值之和

更正式地表示为:

$$\left( \sum_{x=l}^{r} f(x) \right) = f(l) + f(l + 1) + \dots + f(r) $$

输入格式

第一行一个整数 TT表示测试点数量。

接下来 TT 个测试点,每个测试点包含一行,四个整数 aabbllrr

输出格式

对于每个测试点,输出所求的和。

请注意! 某些测试用例的答案可能超出 32 位整数范围,因此你应该在程序中使用至少 64 位整数类型(例如 C++ 中的 long long)。

可以证明,每个测试用例的答案不超过 210182 \cdot 10^{18}

4
1 3 4 6
2 10 11 20
100 20 33 34
10 2 3 5
6
70
212
20

数据范围

  • 对于 30%30\% 的数据,l=rl=r
  • 对于另外 30%30\% 的数据,rl+15×105\sum r-l+1 \le 5\times 10^5
  • 对于 100100% 的数据,没有额外限制,1T1041 \le T \le 10^41a,b1091 \le a, b \le 10^91lr1091 \le l \le r \le 10^9