No.2144 MM
タグ : / 解いたユーザー数 61
作問者 :


問題文
正整数 が与えられます。
与えられた に対して、 良い数列 を以下のように定義します。
- 長さ であり、各要素が 以上 以下 である。
- 以下の操作を繰り返す(何回でも良い)ことで、全ての要素を の倍数にすることができる。
- 隣接する 要素を選び、それぞれに を加算する。
長さ の非負整数列 が与えられるので、それが良い数列かどうかを判定してください。
また、良い数列だった場合は、良い数列の中で辞書順で何番目かを で割ったあまりを求めてください。
入力
- 入力は全て整数である
出力
非負整数列 が良い数列であれば、それが良い数列の中で辞書順で何番目かを で割ったあまりを整数で出力してください。
良い数列でなければ -1
を出力してください。
サンプル
サンプル1
入力
3 5 2 0 3
出力
8
であるとき、良い数列を辞書順に 番目まで並べると以下のようになります。
に対して「 番目の要素に を加算する」という操作を 回行うと になります。
そして、 に対して「 番目の要素に を加算する」という操作を 回行うと になります。
全ての要素を の倍数にすることができたため、 は良い数列と言えます。
サンプル2
入力
2 1000000 0 1
出力
-1
番目の要素の両方を の倍数にすることはできないため、 は良い数列ではないです。
サンプル3
入力
15 840067 703190 347257 169927 111976 170201 451648 473561 341367 803725 263056 785072 155864 274520 420688 391794
出力
293678726
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。