给定 n 个数字,您可以任意次数执行以下操作:选择数字的任何子集,其中没有一个为 0。将子集中的数字减 1,将不在子集中的数字增加 K。
是否可以执行使除其中一个之外的所有数字都变为 0 的操作?
输入:第一行包含测试用例 T 的数量。接下来是 2*T 行,每个用例 2 行。测试用例的第一行包含数字 n 和 K。下一行包含 n 个数字,a_1...a_n。
输出:输出T行,每个测试用例对应一个。对于测试用例,如果存在描述的操作序列,则输出“YES”,否则输出“NO”。
样本输入:
3
2 1
10 10
3 2
1 2 2
3 2
1 2 3
样本输出:
YES
YES
NO
约束:
1 <= T <= 1000
2 <= n <= 100
1 <= K <= 10
0 <= a_i <= 1000
我已经通过以下算法接受了我的解决方案---
a[i] is value in ith cell
n[i] is number of times it is selected in subset
T is total number of times the operation is done
=> a[i] - n[i] + (T - n[i])*K = 0 for all except 1
=> a[i]= n[i] (K+1) -TK
=> a[i] = (K+1)(n[i]-T) + T
因此,除 1(将变为 0)和 T 除以 K+1 时,所有 a[i] 的余数都应该相同。我怀疑这个条件是必要的,但它是充分的吗?