CF2193E.Product Queries
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
今天,Sabyrzhan 被叫到黑板前,面对一个长度为 n 的数组 a,并被布置了一项任务——回答 n 个问题。
在第 i 个问题中,需要确定从黑板上最少选择多少个数组元素(允许重复使用同一个元素),使得它们的乘积恰好等于 i,或者报告无法达到这样的乘积。
注意:至少必须选择一个元素。
输入格式
每个测试包含多个测试用例。第一行包含一个整数 t(1≤t≤104)——测试用例的数量。接下来是测试用例的描述。
每个测试用例的第一行包含一个整数 n(1≤n≤3⋅105)。
每个测试用例的第二行包含 n 个整数 a1,a2,…,an(1≤ai≤n)。
保证所有测试用例中 n 的总和不超过 3⋅105。
输出格式
对于第 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 可以通过选择 a2 获得。
- 3 可以通过选择 a1 获得。
- 4 可以通过选择 a2 两次获得。
- 5 无法获得。
- 6 可以通过选择 a7 获得。
- 7 可以通过选择 a5 获得。
- 8 可以通过选择 a2 三次获得。