結果

問題 No.458 異なる素数の和
ユーザー lllllll88938494
提出日時 2022-09-13 19:32:22
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 1,277 ms / 2,000 ms
コード長 694 bytes
コンパイル時間 389 ms
コンパイル使用メモリ 82,468 KB
実行使用メモリ 416,092 KB
最終ジャッジ日時 2024-12-14 03:20:08
合計ジャッジ時間 9,669 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 28
権限があれば一括ダウンロードができます

ソースコード

diff #

def  c(n):
    sosu=[True]*(n+1)
    sosu[0],sosu[1] = False,False
    cnt=0
    for i in range(4,n+1,2):
        sosu[i] = False
    
    for i in range(3,int(n**0.5)+1,2):
        if sosu[i] == False:
            continue
        for j in range(i,n//i+1,2):
            sosu[j*i]=False
    return [p for p in range(n + 1) if sosu[p]==True]

n=int(input())
t=c(n)
dp=[[-1]*(n+1) for i in range(len(t)+1)]
dp[0][0] = 0

for i in range(len(t)):
    for j in range(n+1):
        if dp[i][j] == -1:
            continue
        dp[i+1][j] = max(dp[i+1][j],dp[i][j])
        if j+t[i] <=  n:
            dp[i+1][j+t[i]] = max(dp[i+1][j+t[i]],dp[i][j]+1)

print(dp[-1][n] if dp[-1][n] > 0 else -1)

0