#CF2193E. Product Queries

    ID: 7022 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>动态规划数学数论最短路CodeforcesCodeforces Round 1076(Div3)Div3ECF2193E1300

Product Queries

题目描述

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

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

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

输入格式

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

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

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

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

输出格式

对于第 i i 个问题,输出一个整数——为获得乘积等于 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 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 1 无法获得。
  • 2 2 可以通过选择 a2 a_2 获得。
  • 3 3 可以通过选择 a1 a_1 获得。
  • 4 4 可以通过选择 a2 a_2 两次获得。
  • 5 5 无法获得。
  • 6 6 可以通过选择 a7 a_7 获得。
  • 7 7 可以通过选择 a5 a_5 获得。
  • 8 8 可以通过选择 a2 a_2 三次获得。

由 deepseek v3 翻译完成

来源

Codeforces 2193E,英文题名 Product Queries。