CF1979C.Earning on Bets

普及-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

你被邀请参加一个游戏。在这个游戏中,有 nn 种可能的结果,对于每一种结果,你必须下注一定数量的硬币(为整数)。如果第 ii 种结果成为获胜结果,你将收回等于你在该结果上下注的硬币数乘以 kik_i 的硬币。注意,恰好有一种结果会成为获胜结果。

你的任务是确定如何分配硬币,使得无论哪种结果获胜,你都能获得收益。更正式地说,你在所有结果上下注的硬币总数必须严格小于每一种可能的获胜结果下你收回的硬币数。

输入格式

每个测试包含多个测试用例。第一行包含一个整数 tt(1≤t≤1041 \le t \le 10^4)——测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含一个整数 nn(1≤n≤501 \le n \le 50)——结果的数量。

每个测试用例的第二行包含 nn 个整数 k1,k2,…,knk_1, k_2, \ldots, k_n(2≤ki≤202 \le k_i \le 20)——如果第 ii 种结果获胜,你的下注将被乘以的倍数。

保证所有测试用例中 nn 的总和不超过 2⋅1052 \cdot 10^5。

输出格式

对于每个测试用例,如果不存在满足条件的下注方式,输出 −1-1。否则,输出 nn 个整数 x1,x2,…,xnx_1, x_2, \ldots, x_n(1≤xi≤1091 \le x_i \le 10^9)——你在每个结果上的下注数。

可以证明,如果存在解,则总有一个满足这些约束的解。

如果有多种可行解,输出任意一种即可。

输入输出样例

  • 输入#1

    6
    3
    3 2 7
    2
    3 3
    5
    5 5 5 5 5
    6
    7 9 3 17 9 13
    3
    6 3 2
    5
    9 4 6 8 3

    输出#1

    27 41 12 
    1 1 
    -1
    1989 1547 4641 819 1547 1071 
    -1
    8 18 12 9 24

说明/提示

在第一个测试用例中,可以如下分配硬币:在第一个结果上下注 2727 枚硬币,在第二个结果上下注 4141 枚硬币,在第三个结果上下注 1212 枚硬币。这样在所有结果上的总下注为 27+41+12=8027 + 41 + 12 = 80 枚硬币。如果第一个结果获胜,你将收回 3×27=813 \times 27 = 81 枚硬币;如果第二个结果获胜,你将收回 2×41=822 \times 41 = 82 枚硬币;如果第三个结果获胜,你将收回 7×12=847 \times 12 = 84 枚硬币。所有这些值都严格大于 8080。

在第二个测试用例中,一种方式是在每个结果上各下注一枚硬币。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页