CF1312C.Adding Powers

普及/提高-

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

Suppose you are performing the following algorithm. There is an array v1,v2,…,vnv_1, v_2, \dots, v_n filled with zeroes at start. The following operation is applied to the array several times — at ii-th step (00-indexed) you can:

  • either choose position pospos (1≤pos≤n1 \le pos \le n) and increase vposv_{pos} by kik^i;
  • or not choose any position and skip this step.

You can choose how the algorithm would behave on each step and when to stop it. The question is: can you make array vv equal to the given array aa (vj=ajv_j = a_j for each jj) after some step?

假设你正在执行以下算法:初始时,有一个长度为 nn 的数组 v1,v2,…,vnv_1, v_2, \dots, v_n,其中所有元素均为 00。接下来,对该数组重复执行如下操作——在第 ii 步(从 00 开始编号)中,你可以:

  • 选择一个位置 pospos(满足 1≤pos≤n1 \le pos \le n),并将 vposv_{pos} 增加 kik^i;
  • 或者不选择任何位置,跳过该步。

你可自由决定每一步的操作方式,并可随时终止算法。问题是:是否存在某种操作序列,使得在某一步结束后,数组 vv 恰好等于给定数组 aa(即对每个 jj 都有 vj=ajv_j = a_j)?

输入格式

The first line contains one integer TT (1≤T≤10001 \le T \le 1000) — the number of test cases. Next 2T2T lines contain test cases — two lines per test case.

The first line of each test case contains two integers nn and kk (1≤n≤301 \le n \le 30, 2≤k≤1002 \le k \le 100) — the size of arrays vv and aa and value kk used in the algorithm.

The second line contains nn integers a1,a2,…,ana_1, a_2, \dots, a_n (0≤ai≤10160 \le a_i \le 10^{16}) — the array you'd like to achieve.

第一行包含一个整数 TT(1≤T≤10001 \le T \le 1000)—— 测试用例的数量。接下来的 2T2T 行包含测试用例,每个测试用例占两行。

每个测试用例的第一行包含两个整数 nn 和 kk(1≤n≤301 \le n \le 30,2≤k≤1002 \le k \le 100)—— 分别为数组 vv 和 aa 的大小,以及算法中使用的值 kk。

每个测试用例的第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n(0≤ai≤10160 \le a_i \le 10^{16})—— 你希望达成的目标数组。

输出格式

For each test case print YES (case insensitive) if you can achieve the array aa after some step or NO (case insensitive) otherwise.

对于每个测试用例,如果可以通过若干步操作得到数组 aa,则输出 YES(不区分大小写);否则输出 NO(不区分大小写)。

输入输出样例

  • 输入#1

    5
    4 100
    0 0 0 0
    1 2
    1
    3 4
    1 4 1
    3 2
    0 1 3
    3 9
    0 59049 810

    输出#1

    YES
    YES
    NO
    NO
    YES

说明/提示

In the first test case, you can stop the algorithm before the 00-th step, or don't choose any position several times and stop the algorithm.

In the second test case, you can add k0k^0 to v1v_1 and stop the algorithm.

In the third test case, you can't make two 11 in the array vv.

In the fifth test case, you can skip 909^0 and 919^1, then add 929^2 and 939^3 to v3v_3, skip 949^4 and finally, add 959^5 to v2v_2.

在第一个测试用例中,你可以在第 00 步之前停止算法,或者多次不选择任何位置后停止算法。

在第二个测试用例中,你可以将 k0k^0 加到 v1v_1 上,然后停止算法。

在第三个测试用例中,你无法使数组 vv 中出现两个 11。

在第五个测试用例中,你可以跳过 909^0 和 919^1,然后将 929^2 和 939^3 加到 v3v_3 上,跳过 949^4,最后将 959^5 加到 v2v_2 上。

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

首页