首先,我们需要记录数组中每个数字出现的最少两个下标。这个可以通过字典来实现。因为题目要求输出的下标是 1-indexed,我们会记录每个数字的最小两个下标。
对于每个查询的数 x,我们需要判断是否存在两个数组中的元素,它们的乘积等于 x。我们可以利用因式分解的方式来进行查找。具体步骤是:
米小游拿到了一个数组,她有若干次询问,每次询问输入一个x,她希望你判断x能否由数组中的两个元素相乘得出。
用数学语言描述,你需要寻找到两个下标i和j(i<j),满足ai∗aj=x
第一行输入一个正整数n,代表数组的大小。
第二行输入n个正整数ai,代表数组的元素。
第三行输入一个正整数q,代表询问次数。
接下来的q行,每行输入一个正整数x,代表一次询问。
1≤n,q≤105
1≤ai,x≤106
对于每次询问,如果无法找到两数乘积等于x,请输出−1−1。
否则输出和j(i<j),用空格隔开,代表ai∗aj=x。有多解时输出任意即可。
输入
5
1 2 3 2 4
2
4
5
输出
2 4
-1 -1
第一组询问,输出15也是可以的。
第二组询问,显然无法找到两个元素相乘等于5。