No.1330 Multiply or Divide
レベル :  / 実行時間制限 : 1ケース 2.000秒 / メモリ制限
            : 512 MB / 標準ジャッジ問題
            
タグ : / 解いたユーザー数 118
作問者 :
penguinman
            
            / テスター :
            
            
nok0
            
            
        
        
        タグ : / 解いたユーザー数 118
作問者 :
penguinman
            
            / テスター :
            
            
nok0
            
            
        問題文最終更新日: 2021-01-17 18:21:21
        
        
            コンテストの他の問題:
            
        
        
        問題文
素数 $P$ と、長さ $N$ の数列 $A$ があります。はじめ $1$ で初期化されている変数 $x$ に対して、$x$ が $M$ 以下である限り以下の操作を繰り返します。
- もし $x$ が $P$ で割り切れるなら、$x$ を $P$ で割る。
 - そうでないとき、 $1≤i≤N$ を満たす整数 $i$ を選び、$x$ に $A_i$ を掛ける。
 
操作回数が最小になるように操作をしたとき、合計で何回操作をすることになりますか?
ただし、どのように要素を選んでも操作が無限に繰り返される場合は $-1$ を出力してください。
入力
$N\ M\ P$ $A_1\ A_2\ ...\ A_N$
- $1≤N≤2×10^5$
 - $1≤M,P≤10^9$
 - $1≤A_i≤10^9$
 - $P$ は素数
 - 入力は全て整数
 
出力
操作が有限回で終わる場合操作回数の最小値を、終わらない場合 $-1$ を出力してください。
 最後に改行してください。    
サンプル
サンプル1
入力
3 5 2 4 2 3
出力
2
$3$ を選び続けるのが最善です。
サンプル2
入力
3 400 2 2 256 128
出力
-1
どのように選んでも、 $x$ は $M$ を超えません。
サンプル3
入力
8 29019 59 59 13021 392 192 392 12 293 40
出力
2
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。