和生蚝一起做乘法吧
题号:NC230372
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 128 M,其他语言256 M
64bit IO Format: %lld

题目描述

众所周知,生活在蓝星的生蚝是一种好学的生物。
在WUT,就有这么一位生蚝,竞赛绩点项目样样精通,博学多才。
这天,生蚝又在研究一些奇怪的东西。
起因是这样的,有一个学妹来找生蚝,向他请教一个问题:给定一个p,对于的所有数,进行若干次“位交换”操作,最终使得所有数的乘积不为0且乘积最小,问这个最小乘积是什么。
生蚝轻松解答了这个问题,但是博学的生蚝岂能止步于此?于是生蚝又跑来向zech提出了这个问题的加强版本。
zech不会做,于是把这个问题出成题来问你们。

给定区间,这些数经过若干次“位交换”操作后,最终所有数的最小非零乘积是多少。

“位交换”操作:
选择两个数x,y,再选择二进制下某一位k,将xy的二进制第k位进行交换。

输入描述:

第一行一个正整数,表示数据组数;
第二行到第行,每行两个正整数,表示区间

输出描述:

T行,每行一个正整数表示所求的最小非零乘积,由于答案可能很大,只需要输出答案的值。
示例1

输入

复制
1
1 7

输出

复制
1512

备注:

的数二进制下是
001,010,011,100,101,110,111,
选择第2个数和第5个数,选择第2(从0开始)位,得到
001,110,011,100,001,110,111,
再选择第3个数和第4个数,选择第1位,得到
001,110,001,110,001,110,111,
这样就得到最小非零乘积为