#CF2039C2. Shohag 爱异或(困难版)

Shohag 爱异或(困难版)

C2. Shohag 爱异或(困难版)

时间限制:每个测试点 22
内存限制256256 兆字节

这是该问题的困难版。两个版本之间的差异已用粗体标出。只有当你解决了两个版本的问题时,才能进行 hackhack

ShohagShohag 有两个整数 xxmm。请帮助他统计满足 1ym1 \le y \le mxyx \oplus y 能被 xxyy(或同时两者)整除的整数 yy 的个数。这里 \oplus 表示按位异或运算符。

若存在整数 cc 使得 a=bca = b \cdot c,则称数 aa 能被数 bb 整除。

输入
第一行包含一个整数 tt1t1041 \le t \le 10^4)——测试用例的数量。
每个测试用例的第一行(也是唯一一行)包含两个空格分隔的整数 xxmm1x1061 \le x \le 10^61m10181 \le m \le 10^{18})。
保证所有测试用例的 xx 之和不超过 10710^7

输出
对于每个测试用例,输出一个整数——满足条件的 yy 的数量。

示例
输入:

5
7 10
2 3
6 4
1 6
4 1

输出:

3
2
2
6
1

注释
在第一个测试用例中,x=7x = 7,在 11m=10m = 10 范围内共有 33 个有效的 yy 值,分别是 117799

  • y=1y = 1 有效,因为 xy=71=6x \oplus y = 7 \oplus 1 = 6,且 66 能被 y=1y = 1 整除。
  • y=7y = 7 有效,因为 xy=77=0x \oplus y = 7 \oplus 7 = 0,且 00 能被 x=7x = 7y=7y = 7 整除。
  • y=9y = 9 有效,因为 xy=79=14x \oplus y = 7 \oplus 9 = 14,且 1414 能被 x=7x = 7 整除。