結果
| 問題 |
No.458 異なる素数の和
|
| ユーザー |
htkb
|
| 提出日時 | 2018-06-04 22:13:08 |
| 言語 | Kotlin (2.1.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 764 bytes |
| コンパイル時間 | 12,535 ms |
| コンパイル使用メモリ | 441,976 KB |
| 実行使用メモリ | 55,452 KB |
| 最終ジャッジ日時 | 2024-11-20 16:02:03 |
| 合計ジャッジ時間 | 27,269 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 27 WA * 1 |
コンパイルメッセージ
Main.kt:3:10: warning: parameter 'args' is never used
fun main(args: Array<String>) {
^
ソースコード
import java.util.*
fun main(args: Array<String>) {
val sc = Scanner(System.`in`)
val N = sc.nextInt()
if (N <= 3) { println(-1); return; }
val primes = mutableListOf<Int>(2, 3)
for (i in 5 until N step 6) primes.add(i)
for (i in 7 until N step 6) primes.add(i)
for (i in 5 until N step 6) {
if (primes.contains(i)) {
for (j in i*3 until N step i*2) primes.remove(j)
}
if (primes.contains(i+2)) {
for (j in i*3+6 until N step i*2+4) primes.remove(j)
}
}
val dp = Array(N+1, {0})
for (n in primes) {
for (i in N-n downTo 0) if (dp[i] > 0) dp[i+n] = Math.max(dp[i+n], dp[i]+1)
dp[n] = Math.max(dp[n], 1)
}
println(if (dp[N] > 0) dp[N] else -1)
}
htkb