CF1221A 2048 Game

题目描述

你正在玩一个变种的 2048 游戏。初始时,你有一个包含 $n$ 个整数的多重集合 $s$。这个多重集合中的每个整数都是 $2$ 的幂。 你可以对这个多重集合进行任意次数(也可以为零)如下操作: 每次操作时,你选择两个相等的整数,将它们从 $s$ 中移除,并将它们的和插入到 $s$ 中。 例如,如果 $s = \{1, 2, 1, 1, 4, 2, 2\}$,你选择两个 $2$,则多重集合变为 $\{1, 1, 1, 4, 4, 2\}$。 如果你的多重集合中包含数字 $2048$,你就获胜。例如,如果 $s = \{1024, 512, 512, 4\}$,你可以这样获胜:选择两个 $512$,多重集合变为 $\{1024, 1024, 4\}$。然后选择两个 $1024$,多重集合变为 $\{2048, 4\}$,你获胜。 你需要判断是否可以获胜。 你需要回答 $q$ 个独立的询问。

输入格式

第一行包含一个整数 $q$($1 \le q \le 100$),表示询问的数量。 每个询问的第一行包含一个整数 $n$($1 \le n \le 100$),表示多重集合中的元素个数。 每个询问的第二行包含 $n$ 个整数 $s_1, s_2, \dots, s_n$($1 \le s_i \le 2^{29}$),表示多重集合的元素。保证所有元素都是 $2$ 的幂。

输出格式

对于每个询问,如果可以在多重集合中得到 $2048$,输出 YES,否则输出 NO。 你可以用任意大小写输出答案(例如 yEs、yes、Yes 和 YES 都被认为是正确的正答)。

说明/提示

在第一个询问中,你可以这样获胜:选择两个 $512$,$s$ 变为 $\{1024, 64, 1024\}$。然后选择两个 $1024$,$s$ 变为 $\{2048, 64\}$,你获胜。 在第二个询问中,$s$ 初始就包含 $2048$。 由 ChatGPT 4.1 翻译