結果

問題 No.1330 Multiply or Divide
ユーザー SPD_9X2
提出日時 2021-01-08 21:49:07
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 320 ms / 2,000 ms
コード長 670 bytes
コンパイル時間 1,603 ms
コンパイル使用メモリ 82,356 KB
実行使用メモリ 120,764 KB
最終ジャッジ日時 2025-06-20 01:20:58
合計ジャッジ時間 5,642 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 51
権限があれば一括ダウンロードができます

ソースコード

diff #

"""

dp[i] = i回の操作で行ける最大値

"""


from sys import stdin
import sys

N,M,P = map(int,stdin.readline().split())
A = list(map(int,stdin.readline().split()))
B = []
cnt = [0] * N

for i in range(N):
    na = A[i]
    while na % P == 0:
        na //= P
        cnt[i] += 1
    B.append(na)

if max(B) == 1 and max(A) <= M:
    print (-1)
    sys.exit()

dp = [1] * 1001
for i in range(1000):
    
    nmax = dp[i]
    if nmax > M:
        print (i)
        break

    for j in range(N):
        if nmax * A[j] > M:
            print (i+1)
            sys.exit()
        else:
            dp[i+1+cnt[j]] = max(dp[i+1+cnt[j]] , dp[i]*B[j])
        
    
0