結果
問題 | No.2048 L(I+D)S |
ユーザー | 箱星 |
提出日時 | 2022-08-09 14:38:21 |
言語 | Kotlin (1.9.23) |
結果 |
AC
|
実行時間 | 398 ms / 2,000 ms |
コード長 | 1,670 bytes |
コンパイル時間 | 12,366 ms |
コンパイル使用メモリ | 436,464 KB |
実行使用メモリ | 96,356 KB |
最終ジャッジ日時 | 2024-09-20 00:39:14 |
合計ジャッジ時間 | 18,272 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 284 ms
70,640 KB |
testcase_01 | AC | 285 ms
70,516 KB |
testcase_02 | AC | 281 ms
74,684 KB |
testcase_03 | AC | 271 ms
70,532 KB |
testcase_04 | AC | 273 ms
70,620 KB |
testcase_05 | AC | 276 ms
70,468 KB |
testcase_06 | AC | 287 ms
70,480 KB |
testcase_07 | AC | 273 ms
70,612 KB |
testcase_08 | AC | 370 ms
96,344 KB |
testcase_09 | AC | 327 ms
91,956 KB |
testcase_10 | AC | 318 ms
91,952 KB |
testcase_11 | AC | 382 ms
96,124 KB |
testcase_12 | AC | 363 ms
96,304 KB |
testcase_13 | AC | 335 ms
91,904 KB |
testcase_14 | AC | 334 ms
92,124 KB |
testcase_15 | AC | 318 ms
91,932 KB |
testcase_16 | AC | 396 ms
96,080 KB |
testcase_17 | AC | 396 ms
96,356 KB |
testcase_18 | AC | 398 ms
96,148 KB |
ソースコード
fun main() { val n = readln().toInt() val facSize = 300000 val fac = Array(facSize) { ModInt(1) } for (i in 1 until facSize) { fac[i] = fac[i - 1] * ModInt(i) } fun helper(n: Int, m: Int): ModInt { val r = fac[n + m] / (fac[n - 2] * fac[m - 2] * ModInt(n) * ModInt(m) * ModInt(n + m - 1)) return r * r } var ans = ModInt(0) for (k in 2..n - 2) { ans += helper(n - k, k) } println(ans) } // region ModInt class ModInt(x: Long) { companion object { const val MOD = 998244353L //const val MOD = 1000000007L } constructor(y: Int) : this(y.toLong()) val x = (x % MOD + MOD) % MOD operator fun plus(other: ModInt): ModInt { return ModInt(x + other.x) } operator fun minus(other: ModInt): ModInt { return ModInt(x - other.x) } operator fun times(other: ModInt): ModInt { return ModInt(x * other.x) } operator fun div(other: ModInt): ModInt { return this * other.inv() } fun pow(exp: Long): ModInt { if (exp == 0L) return ModInt(1L) var a = pow(exp shr 1) a *= a if (exp and 1L == 0L) return a return this * a } fun inv(): ModInt { return this.pow(MOD - 2) } override fun equals(other: Any?): Boolean { if (this === other) return true if (javaClass != other?.javaClass) return false other as ModInt if (x != other.x) return false return true } override fun hashCode(): Int { return x.hashCode() } override fun toString(): String { return "$x" } }