問題一覧 > 通常問題

No.1330 Multiply or Divide

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 118
作問者 : penguinman / テスター : nok0
22 ProblemId : 5191 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2021-01-17 18:21:21

問題文

素数 P と、長さ N の数列 A があります。はじめ 1 で初期化されている変数 x に対して、xM 以下である限り以下の操作を繰り返します。

  • もし xP で割り切れるなら、xP で割る。
  • そうでないとき、 1iN を満たす整数 i を選び、xAi を掛ける。

操作回数が最小になるように操作をしたとき、合計で何回操作をすることになりますか?

ただし、どのように要素を選んでも操作が無限に繰り返される場合は 1 を出力してください。


入力

N M P
A1 A2 ... AN
  • 1N2×105
  • 1M,P109
  • 1Ai109
  • P は素数
  • 入力は全て整数

出力

操作が有限回で終わる場合操作回数の最小値を、終わらない場合 1 を出力してください。
最後に改行してください。

サンプル

サンプル1
入力
3 5 2
4 2 3
出力
2

3 を選び続けるのが最善です。

サンプル2
入力
3 400 2
2 256 128
出力
-1

どのように選んでも、 xM を超えません。

サンプル3
入力
8 29019 59
59 13021 392 192 392 12 293 40
出力
2

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。