C1. Shohag 喜欢异或(简单版)
每测试点时间限制:2 秒
内存限制:256 兆字节
这是该问题的简单版本。两个版本之间的差异已用粗体标出。只有同时解决了两个版本的题目,你才能进行 hack。
Shohag 有两个整数 x 和 m。
请帮他统计满足以下条件的整数 y(1≤y≤m)的个数:
- x=y,并且
- x⊕y 是 x 或 y(或两者同时)的一个除数。
这里 ⊕ 表示按位异或运算。
除数定义
若存在整数 c 使得 a=b⋅c,则称 b 是 a 的一个除数。
输入格式
第一行包含一个整数 t(1≤t≤104)——测试用例的数量。
每个测试用例一行,包含两个空格分隔的整数 x 和 m(1≤x≤106,1≤m≤1018)。
保证所有测试用例的 x 之和不超过 107。
输出格式
对于每个测试用例,输出一个整数——满足条件的 y 的数量。
示例
输入:
5
6 9
5 7
2 3
6 4
4 1
输出:
3
2
1
1
0
注释
第一个测试用例:x=6,在 1 到 m=9 之间,有 3 个有效的 y 值:4,5,7。
- y=4 有效,因为 x⊕y=6⊕4=2,且 2 同时是 x=6 和 y=4 的除数。
- y=5 有效,因为 x⊕y=6⊕5=3,且 3 是 x=6 的除数。
- y=7 有效,因为 x⊕y=6⊕7=1,且 1 同时是 x=6 和 y=7 的除数。
第二个测试用例:x=5,在 1 到 m=7 之间,有 2 个有效的 y 值:4 和 6。
- y=4 有效,因为 x⊕y=5⊕4=1,且 1 同时是 x=5 和 y=4 的除数。
- y=6 有效,因为 x⊕y=5⊕6=3,且 3 是 y=6 的除数。