题目描述
哈希函数可以将数据转换为固定长度的输出序列;也可以说,它为每个数据创建一个"标签"。
在本题中,输入始终是整数。如果两个不同的整数 x,y (x=y) 被转换成了相同的字符串,这可能是个坏事。在哈希函数的视角来看,这两个数可以一定意义上被认为是相同的。这被称为哈希冲突。
我们考虑以下带参数 k 的哈希函数:
H(x)=(xmodk)+(kmodx)
对于每对输入 (x,y) (x=y),是否存在一个参数,使得对应的哈希函数会导致哈希冲突?如果存在,输出任意这样的 k;否则,输出 -1。
输入格式
每组测试包含多个测试用例。第一行包含测试用例的数量 T (1≤T≤104)。
每个测试用例由一行组成。该行包含两个整数 x,y (1≤x,y≤109,x=y),即元素对。
输出格式
对于每个测试用例,输出一个整数 —— 导致哈希冲突的参数 k (1≤k≤1018)。如果没有不大于 1018 的正整数满足条件,则输出 -1。
2
5 9
9 15
4
6
解释 #1
对于第一个案例,5mod4+4mod5=1+4=5,9mod4+4mod9=1+4=5。
对于第二个案例,9mod6+6mod9=3+6=9,15mod6+6mod15=3+6=9。