結果
問題 | No.458 異なる素数の和 |
ユーザー |
![]() |
提出日時 | 2018-06-04 22:18:46 |
言語 | Kotlin (2.1.0) |
結果 |
AC
|
実行時間 | 607 ms / 2,000 ms |
コード長 | 820 bytes |
コンパイル時間 | 12,675 ms |
コンパイル使用メモリ | 447,248 KB |
実行使用メモリ | 58,092 KB |
最終ジャッジ日時 | 2024-11-20 16:02:45 |
合計ジャッジ時間 | 27,195 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 28 |
コンパイルメッセージ
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()when (N) {1 -> { println(-1); return }2, 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)}