Monoxer Programming Contest for Engineers
コンテスト日時
2025/08/08 (Fr) 18:30 - 20:10

E - Formula

Assam
2
s
1024
MB
350

問題文

ストーリー

Monoxerが扱える問題の形式はいくつかありますが、そのうちのひとつに数式があります。
専用のキーボードの他に、手書きによる入力をサポートしています。
https://tech.monoxer.com/entry/2022/10/18/170917


畔柳君は、1桁の整数 $N$ 個からなる数列 $A$ を持っています。次の一連の操作を繰り返すことで、持っている数列を $0$ ひとつだけからなる数列にできるでしょうか?できる場合、操作の最小回数も求めてください。

  1. 数列の要素を好きな順に並び替える
  2. 数列の要素数を $X$ として、$1$ 以上 $X$ 未満の整数 $i$ を選ぶ。「$A_1 A_2 \ldots A_{i-1} A_i \times A_{i+1} A_{i+2} \ldots A_X$」を、十進法で$i$桁の数と$X-i$桁の数の掛け算とみて計算し、その積を$P$とする
  3. $P$ を十進法で書き表したとき、$P$ の桁数を $Y$ とおく。$P$ の上から $j$ 桁目を $P_j$ と表すとき、$A$ を $P_1, P_2, \ldots, P_Y$ で置き換える

制約

  • $2 \le N \le 4$
  • $0 \le A_i \le 9$

入力

$N$

$A_1$ $A_2$ $\ldots$ $A_N$

出力

持っている数列を $0$ ひとつだけからなる数列にできる場合は、操作回数の最小値を 1 行に出力してください。できない場合は $-1$ を出力してください。

入力例 1
3 1 5 7
出力例 1
2
  1. 1 5 7 を並べ替えて 7 1 5 にする。

  2. $X = 3$ である。 $i = 1$ とすると $A_1 A_2 \ldots A_{i-1} A_i = 7$ であり、 $A_{i+1} A_{i+2} \ldots A_X = 15$ である。これらの積は $P = 105$ である。

  3. $P$ の桁数は $Y = 3$ である。 $A$ は長さ 3 の数列 1 0 5 になる。

  4. 1 0 5 を並べ替えて 0 1 5 にする。

  5. $X = 3$ である。 $i = 1$ とすると $A_1 A_2 \ldots A_{i-1} A_i = 0$ であり、 $A_{i+1} A_{i+2} \ldots A_X = 15$ である。これらの積は $P = 0$ である。

  6. $P$ の桁数は $Y = 1$ である。 $A$ は長さ 1 の数列 0 になる。

以上が操作 $2$ 回で持っている数列を $0$ ひとつだけからなる数列にする方法の例です。操作 $1$ 回以下で持っている数列を $0$ ひとつだけからなる数列にすることはできないので、答えは $2$ です。

入力例 2
2 4 3
出力例 2
-1
入力例 3
4 9 9 9 9
出力例 3
2
入力例 4
4 0 0 0 0
出力例 4
1
  1. のステップで、 0 0 0 0 を 0 と 0 0 0 に分割すると後者は十進数として解釈した場合に先頭に余分な 0 がありますが、これは問題ないことに注意してください。
提出
C++23 (g++ 12.2.0)