CF1744D.Divisibility by 2^n
普及-
通过率:0%
时间限制:2.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given an array of positive integers a1,a2,…,an.
Make the product of all the numbers in the array (that is, a1⋅a2⋅…⋅an) divisible by 2n.
You can perform the following operation as many times as you like:
- select an arbitrary index i (1≤i≤n) and replace the value ai with ai=ai⋅i.
You cannot apply the operation repeatedly to a single index. In other words, all selected values of i must be different.
Find the smallest number of operations you need to perform to make the product of all the elements in the array divisible by 2n. Note that such a set of operations does not always exist.
给你一个正整数数组 a1,a2,…,an。
要求使数组中所有数的乘积(即 a1⋅a2⋅…⋅an)能被 2n 整除。
你可以执行以下操作任意多次:
- 任选一个下标 i(1≤i≤n),并将 ai 替换为 ai=ai⋅i。
但你不能对同一个下标重复执行该操作。换言之,所有被选中的 i 值必须互不相同。
求使数组所有元素的乘积能被 2n 整除所需的最少操作次数。注意:这样的操作集合并不总是存在。
输入格式
The first line of the input contains a single integer t (1≤t≤104) — the number test cases.
Then the descriptions of the input data sets follow.
The first line of each test case contains a single integer n (1≤n≤2⋅105) — the length of array a.
The second line of each test case contains exactly n integers: a1,a2,…,an (1≤ai≤109).
It is guaranteed that the sum of n values over all test cases in a test does not exceed 2⋅105.
输入的第一行包含一个整数 t(1≤t≤104)—— 表示测试用例的数量。
随后是各测试用例的输入数据描述。
每个测试用例的第一行包含一个整数 n(1≤n≤2⋅105)—— 表示数组 a 的长度。
每个测试用例的第二行包含恰好 n 个整数:a1,a2,…,an(1≤ai≤109)。
保证所有测试用例中 n 的总和不超过 2⋅105。
输出格式
For each test case, print the least number of operations to make the product of all numbers in the array divisible by 2n. If the answer does not exist, print -1.
对于每个测试用例,输出使数组中所有数的乘积能被 2n 整除所需的最少操作次数。如果不存在这样的答案,则输出 −1。
输入输出样例
输入#1
6 1 2 2 3 2 3 10 6 11 4 13 17 1 1 5 1 1 12 1 1 6 20 7 14 18 3 5
输出#1
0 1 1 -1 2 1
说明/提示
In the first test case, the product of all elements is initially 2, so no operations needed.
In the second test case, the product of elements initially equals 6. We can apply the operation for i=2, and then a2 becomes 2⋅2=4, and the product of numbers becomes 3⋅4=12, and this product of numbers is divided by 2n=22=4.
In the fourth test case, even if we apply all possible operations, we still cannot make the product of numbers divisible by 2n — it will be (13⋅1)⋅(17⋅2)⋅(1⋅3)⋅(1⋅4)=5304, which does not divide by 2n=24=16.
In the fifth test case, we can apply operations for i=2 and i=4.
在第一个测试用例中,所有元素的乘积初始为 2,因此无需进行任何操作。
在第二个测试用例中,元素的乘积初始为 6。我们可以对 i=2 执行操作,此时 a2 变为 2⋅2=4,数字的乘积变为 3⋅4=12,而该乘积可被 2n=22=4 整除。
在第四个测试用例中,即使执行所有可能的操作,我们仍无法使数字的乘积被 2n 整除——其结果为 (13⋅1)⋅(17⋅2)⋅(1⋅3)⋅(1⋅4)=5304,而 5304 不能被 2n=24=16 整除。
在第五个测试用例中,我们可以对 i=2 和 i=4 执行操作。
输入解题思路,AI测评打分。不知道怎么写?