atcoder#ABC276D. [ABC276D] Divide by 2 or 3

[ABC276D] Divide by 2 or 3

配点 : 400400

問題文

正整数列 A=(a1,a2,,aN)A=(a_1,a_2,\ldots,a_N) が与えられます。 あなたは以下の操作のうち 11 つを選んで行うことを 00 回以上何度でも繰り返せます。

  • 1iN1 \leq i \leq N かつ aia_i22 の倍数であるような整数 ii を選び、aia_iai2\frac{a_i}{2} に置き換える
  • 1iN1 \leq i \leq N かつ aia_i33 の倍数であるような整数 ii を選び、aia_iai3\frac{a_i}{3} に置き換える

あなたの目標は AAa1=a2==aNa_1=a_2=\ldots=a_N を満たす状態にすることです。 目標を達成するために必要な操作の回数の最小値を求めてください。ただし、どのように操作を行っても目標を達成できない場合、代わりに -1 と出力してください。

制約

  • 2N10002 \leq N \leq 1000
  • 1ai1091 \leq a_i \leq 10^9
  • 入力はすべて整数

入力

入力は以下の形式で標準入力から与えられる。

NN

a1a_1 a2a_2 \ldots aNa_N

出力

答えを出力せよ。

3
1 4 3
3

次のように操作をすると 33 回で目標を達成でき、これが最小の回数です。

  • aia_i22 の倍数であるような整数 ii として 22 を選び、a2a_2a22\frac{a_2}{2} に置き換える。AA(1,2,3)(1,2,3) となる。
  • aia_i22 の倍数であるような整数 ii として 22 を選び、a2a_2a22\frac{a_2}{2} に置き換える。AA(1,1,3)(1,1,3) となる。
  • aia_i33 の倍数であるような整数 ii として 33 を選び、a3a_3a33\frac{a_3}{3} に置き換える。AA(1,1,1)(1,1,1) となる。
3
2 7 6
-1

どのように操作を行っても目標を達成できません。

6
1 1 1 1 1 1
0