AT_arc229_b [ARC229B] Halving Subtraction
题目描述
给定一个长度为 $N$ 的非负整数序列 $A=(A_1,A_2,\dots,A_N)$。
你可以对 $A$ 进行如下操作,次数不限(也可以不进行操作):
- 选择一个正整数 $x_0$,令 $x=x_0$。然后按顺序对于 $i=1,2,\ldots,N$,进行如下操作:
- 将 $x$ 从 $A_i$ 中减去,并将 $x$ 替换为 $x := \left\lfloor \frac{x}{2} \right\rfloor$。
判断是否有可能通过若干此类操作,使序列 $A$ 的所有元素都变为 $0$;如果可以,求使所有元素变为 $0$ 的最少操作次数。
给定 $T$ 组测试数据,请分别解决每组测试。
输入格式
输入从标准输入读入,格式如下:
$T$
$\text{case}_1$
$\text{case}_2$
$\vdots$
$\text{case}_T$
每组测试数据的格式如下:
$N\ A_1\ A_2\ \ldots\ A_N$
输出格式
按顺序输出每组测试数据的答案,每组一行。
对于每组测试数据,如果可以使所有 $A$ 元素都变为 $0$,输出所需的最少操作次数;如果无法达成,输出 $-1$。
说明/提示
### 样例解释 1
以第一组测试数据为例:
通过如下两次操作,可以使所有 $A$ 元素变为 $0$:
- 选择 $x_0=3$。此时 $A=(10,4)$ 变为 $A=(7,3)$。
- 选择 $x_0=7$。此时 $A=(7,3)$ 变为 $A=(0,0)$。
无法使用更少次数的操作使 $A$ 全为 $0$,因此第一行输出 $2$。
### 数据范围
- $1\le T\le 10^4$
- $1\le N\le 30$
- $0\le A_i\le 10^9$
- 所有输入均为整数。
由 ChatGPT 5 翻译