CF1979C Earning on Bets
题目描述
你被邀请参加一个游戏。在这个游戏中,有 $n$ 种可能的结果,对于每一种结果,你必须下注一定数量的硬币(为整数)。如果第 $i$ 种结果成为获胜结果,你将收回等于你在该结果上下注的硬币数乘以 $k_i$ 的硬币。注意,恰好有一种结果会成为获胜结果。
你的任务是确定如何分配硬币,使得无论哪种结果获胜,你都能获得收益。更正式地说,你在所有结果上下注的硬币总数必须严格小于每一种可能的获胜结果下你收回的硬币数。
输入格式
每个测试包含多个测试用例。第一行包含一个整数 $t$($1 \le t \le 10^4$)——测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含一个整数 $n$($1 \le n \le 50$)——结果的数量。
每个测试用例的第二行包含 $n$ 个整数 $k_1, k_2, \ldots, k_n$($2 \le k_i \le 20$)——如果第 $i$ 种结果获胜,你的下注将被乘以的倍数。
保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。
输出格式
对于每个测试用例,如果不存在满足条件的下注方式,输出 $-1$。否则,输出 $n$ 个整数 $x_1, x_2, \ldots, x_n$($1 \le x_i \le 10^9$)——你在每个结果上的下注数。
可以证明,如果存在解,则总有一个满足这些约束的解。
如果有多种可行解,输出任意一种即可。
说明/提示
在第一个测试用例中,可以如下分配硬币:在第一个结果上下注 $27$ 枚硬币,在第二个结果上下注 $41$ 枚硬币,在第三个结果上下注 $12$ 枚硬币。这样在所有结果上的总下注为 $27 + 41 + 12 = 80$ 枚硬币。如果第一个结果获胜,你将收回 $3 \times 27 = 81$ 枚硬币;如果第二个结果获胜,你将收回 $2 \times 41 = 82$ 枚硬币;如果第三个结果获胜,你将收回 $7 \times 12 = 84$ 枚硬币。所有这些值都严格大于 $80$。
在第二个测试用例中,一种方式是在每个结果上各下注一枚硬币。
由 ChatGPT 4.1 翻译