CF2193E.Product Queries

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

今天,Sabyrzhan 被叫到黑板前,面对一个长度为 nn 的数组 aa,并被布置了一项任务——回答 nn 个问题。

在第 ii 个问题中,需要确定从黑板上最少选择多少个数组元素(允许重复使用同一个元素),使得它们的乘积恰好等于 ii,或者报告无法达到这样的乘积。

注意:至少必须选择一个元素。

输入格式

每个测试包含多个测试用例。第一行包含一个整数 tt1t1041 \le t \le 10^4)——测试用例的数量。接下来是测试用例的描述。

每个测试用例的第一行包含一个整数 nn1n31051 \le n \le 3 \cdot 10 ^ 5)。

每个测试用例的第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n1ain1 \le a_i \le n)。

保证所有测试用例中 nn 的总和不超过 31053 \cdot 10 ^ 5

输出格式

对于第 ii 个问题,输出一个整数——为获得乘积等于 ii 所需的最少数组元素数量,如果无法达到这样的乘积,则输出 1−1

输入输出样例

  • 输入#1

    6
    8
    3 2 2 3 7 3 6 7
    5
    1 2 3 4 5
    3
    1 1 1
    10
    2 1 2 1 3 5 5 7 7 7
    4
    1 1 2 2
    1
    1

    输出#1

    -1 1 1 2 -1 1 1 3
    1 1 1 1 1
    1 -1 -1
    1 1 1 2 1 2 1 3 2 2
    1 1 -1 2
    1

说明/提示

考虑第一个测试用例。乘积可以按如下方式获得:

  • 11 无法获得。
  • 22 可以通过选择 a2a_2 获得。
  • 33 可以通过选择 a1a_1 获得。
  • 44 可以通过选择 a2a_2 两次获得。
  • 55 无法获得。
  • 66 可以通过选择 a7a_7 获得。
  • 77 可以通过选择 a5a_5 获得。
  • 88 可以通过选择 a2a_2 三次获得。
首页