CFCF2193E.Product Queries

普及/提高-

通过率:0%

AC君温馨提醒

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

题目描述

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

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

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

输入格式

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

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

每个测试用例的第二行包含 $ n $ 个整数 $ a_1, a_2, \ldots, a_n 1 \le a_i \le n $)。

保证所有测试用例中 $ n $ 的总和不超过 $ 3 \cdot 10 ^ 5 $。

输出格式

对于第 $ i $ 个问题,输出一个整数——为获得乘积等于 $ i $ 所需的最少数组元素数量,如果无法达到这样的乘积,则输出 $ −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

说明/提示

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

  • $ 1 $ 无法获得。
  • $ 2 $ 可以通过选择 $ a_2 $ 获得。
  • $ 3 $ 可以通过选择 $ a_1 $ 获得。
  • $ 4 $ 可以通过选择 $ a_2 $ 两次获得。
  • $ 5 $ 无法获得。
  • $ 6 $ 可以通过选择 $ a_7 $ 获得。
  • $ 7 $ 可以通过选择 $ a_5 $ 获得。
  • $ 8 $ 可以通过选择 $ a_2 $ 三次获得。
首页