A71387 | 数学游戏(math)
来源编程题
时间限制1s
内存限制512MB
通过 / 提交0/0
题目描述
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,否则输出满足条件的最小正整数 y 。
输入输出样例
输入 #1
1 10 240
输出 #1
12
输入 #2
3 5 30 4 8 11 11
输出 #2
6 -1 1
样例 1 解释
x × y × gcd(x,y) = 10 × 12 × gcd(10,12) = 240
数据范围
对于 20\% 的数据,t,x,z≤103 。
对于 40\% 的数据,t≤103,x≤106,z≤109。
对于另 30\% 的数据,t≤104 。
对于另 20\% 的数据,x≤106 。
对于 100\% 的数据,1≤t≤5×105,1≤x≤109,1≤z<263 。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?