问题1888--2022-noi-online普及组-第二题-数学游戏(math)

1888: 2022-noi-online普及组-第二题-数学游戏(math)

时间限制: 1 Sec  内存限制: 128 MB
提交: 5  解决: 2
[提交] [状态] [讨论版] [命题人:]

题目描述

Kri 喜欢玩数字游戏。
一天,他在草稿纸上写下了t对正整数(x,y),并对于每一对正整数计算出了z=x*y*gcd(x,y) 。
可是调皮的 Zay 找到了 Kri 的草稿纸,并把每一组的y都擦除了,还可能改动了一些z。
现在 Kri 想请你帮忙还原每一组的y,具体地,对于每一组中的x和z,你需要输出最小的正整数y,使得z=x*y*gcd(x,y)。如果这样的y不存在,也就是 Zay 一定改动了z,那么请输出-1。


注: gcd(x,y)表示x和y的最大公约数,也就是最大的正整数d,满足d既是x的约数,又是y的约数。

输入

第一行一个整数t,表示有t对正整数x和z。
接下来t行,每行两个正整数x和z,含义见题目描述。

输出

对于每对数字输出一行,如果不存在满足条件的正整数y,请输出-1,否则输出满足条件的最小正整数 。

样例输入 Copy

1
10 240

样例输出 Copy

12

提示

样例一解释
x*y*gcd(x,y) = 10*12*gcd(10,12) = 240
样例二输入
3
5 30
4 8
11 11
输出:
6
-1
1
数据范围
对于20%的数据:t,x,z <=1000
对于40%的数据:t<=1000,x<=1000000,z<=1000000000
对于另30%的数据:t <= 10000
对于另20%的数据:x <=1000000
对于100%的数据: 1 <=t <=5*105,1<=x<=109, 1<=z<=263

来源/分类