小红的期望题
题号:NC289102
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}小红在 [l_1,r_1] 这个区间随机取了一个整数,小紫在 [l_2,r_2] 这个区间随机取了一个整数。小红想知道,这两个数的按位异或的期望等于多少?为了避免精度问题,请将答案对 (10^9+7) 取模后输出。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leq T\leq 10^4\right) 代表数据组数,每组测试数据描述如下:
\hspace{15pt}第一行输入四个正整数 l_1,r_1,l_2,r_2 \left(1 \leq l_1 \leq r_1 \leq 10^9;\ 1 \leq l_2 \leq r_2 \leq 10^9\right) 代表一次询问。

输出描述:

\hspace{15pt}对于每组测试数据,新起一行。输出一个整数代表答案。
\hspace{15pt}可以证明答案可以表示为一个不可约分数 \tfrac{p}{q},为了避免精度问题,请直接输出整数 \left(p \times q^{-1} \bmod M\right) 作为答案,其中 M = (10^9+7)q^{-1} 是满足 q\times q^{-1} \equiv 1 \pmod{M} 的整数。
\hspace{15pt}更具体地,你需要找到一个整数 x \in [0, M) 满足 x \times qM 取模等于 p,您可以查看样例解释得到更具体的说明。
示例1

输入

复制
2
3 3 4 4
3 4 3 4

输出

复制
7
500000007

说明

\hspace{15pt}对于第一组测试数据,小红必定取 3,小紫必定取 4,按位异或的结果为 7

\hspace{15pt}对于第二组测试数据,小红取 34 的概率均为 \tfrac{1}{2},小紫取 34 的概率均为 \tfrac{1}{2},按位异或的结果为 7 的概率为 \tfrac{1}{2},按位异或的结果为 0 的概率为 \tfrac{1}{2},所以按位异或的期望为 7 \times \tfrac{1}{2} + 0 \times \tfrac{1}{2} = \tfrac{7}{2}
\hspace{15pt}我们能够找到,500\,000\,007 \times 2 = 1\,000\,000\,014,对 10^9+7 取模后恰好等于分子 7,所以 500\,000\,007 是需要输出的答案。