CF1300A Non-zero
题目描述
Guy-Manuel 和 Thomas 有一个长度为 $n$ 的整数数组 $a$,即 $a_1, a_2, \dots, a_n$。每一步操作中,他们可以选择数组中的任意一个元素,将其加 $1$。形式化地说,每一步可以选择任意一个整数下标 $i$($1 \le i \le n$),执行 $a_i := a_i + 1$。
如果数组所有元素的和或者积等于零,Guy-Manuel 和 Thomas 不介意再进行一次操作。
他们最少需要进行多少步操作,才能使得数组所有元素的和与积都不为零?形式化地说,求最小操作次数,使得 $a_1 + a_2 + \dots + a_n \ne 0$ 且 $a_1 \cdot a_2 \cdot \dots \cdot a_n \ne 0$。
输入格式
每组测试数据包含多个测试用例。
第一行包含一个整数 $t$($1 \le t \le 10^3$),表示测试用例的数量。
每个测试用例的第一行包含一个整数 $n$($1 \le n \le 100$),表示数组的长度。
每个测试用例的第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($-100 \le a_i \le 100$),表示数组的元素。
输出格式
对于每个测试用例,输出一个整数,表示使得数组所有元素的和与积都不为零所需的最小操作次数。
说明/提示
在第一个测试用例中,数组的和为 $0$。如果我们将第一个元素加 $1$,数组变为 $[3, -1, -1]$,此时和为 $1$,积为 $3$。
在第二个测试用例中,数组的和与积都为 $0$。如果我们将第二个和第三个元素各加 $1$,数组变为 $[-1, 1, 1, 1]$,此时和为 $2$,积为 $-1$。可以证明,无法用更少的步数实现目标。
在第三个测试用例中,数组的和与积都不为零,无需进行任何操作。
在第四个测试用例中,将第一个元素加 $1$ 两次后,数组变为 $[2, -2, 1]$,此时和为 $1$,积为 $-4$。
由 ChatGPT 4.1 翻译