n個の数値が与えられた場合、次の操作を何度でも実行できます。数値のサブセットを選択します。いずれも0ではありません。サブセット内の数値を1ずつ減らし、サブセット内にない数値をKだけ増やします。
1つを除いてすべて0になるような操作はできますか?
入力:最初の行には、テストケースTの数が含まれています。2* T行が続き、ケースごとに2つです。テストケースの最初の行には、番号nとKが含まれています。次の行には、番号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(ゼロになる)とK + 1で割ったときのTを除いて、すべてのa[i]で同じである必要があります。私の疑問は、この条件が必要であるということですが、それはどのように十分ですか?