結果
問題 | No.2754 Cumulate and Drop |
ユーザー | titia |
提出日時 | 2024-05-13 01:15:55 |
言語 | Kotlin (1.9.23) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,268 bytes |
コンパイル時間 | 13,625 ms |
コンパイル使用メモリ | 441,060 KB |
実行使用メモリ | 102,844 KB |
最終ジャッジ日時 | 2024-05-13 01:16:22 |
合計ジャッジ時間 | 22,531 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 327 ms
68,844 KB |
testcase_01 | AC | 323 ms
68,824 KB |
testcase_02 | AC | 345 ms
68,820 KB |
testcase_03 | AC | 330 ms
68,728 KB |
testcase_04 | AC | 329 ms
68,660 KB |
testcase_05 | AC | 329 ms
68,896 KB |
testcase_06 | AC | 348 ms
68,828 KB |
testcase_07 | AC | 358 ms
68,936 KB |
testcase_08 | AC | 522 ms
77,508 KB |
testcase_09 | AC | 634 ms
92,476 KB |
testcase_10 | AC | 592 ms
98,660 KB |
testcase_11 | AC | 571 ms
85,612 KB |
testcase_12 | AC | 620 ms
102,808 KB |
testcase_13 | WA | - |
testcase_14 | AC | 632 ms
102,612 KB |
testcase_15 | AC | 587 ms
85,456 KB |
testcase_16 | AC | 516 ms
75,204 KB |
testcase_17 | AC | 652 ms
102,716 KB |
testcase_18 | AC | 624 ms
102,844 KB |
testcase_19 | WA | - |
ソースコード
fun main() { val n = readLine()!!.toInt() val a = readLine()!!.split(" ").map { it.toLong() } val mod = 998244353L val fact = LongArray(500000) { 1L } for (i in 1 until fact.size) { fact[i] = fact[i - 1] * i % mod } val factInv = LongArray(fact.size) { i -> if (i == fact.lastIndex) fact.last().modPow(mod - 2, mod) else 0L } for (i in fact.lastIndex - 1 downTo 0) { factInv[i] = factInv[i + 1] * (i + 1) % mod } fun combi(a: Int, b: Int): Long { return if (b in 0..a) { fact[a] * factInv[b] % mod * factInv[a - b] % mod } else { 0L } } fun cat(i: Int, j: Int): Long { return (combi(i + j + 1, j) - 2 * combi(i + j, j - 1) + mod) % mod } var ans = 0L a.reversed().forEachIndexed { i, ai -> ans = (ans + ai.toLong() * cat(n - 1, i) % mod) % mod } println(ans) } private fun Long.modPow(exponent: Long, modulus: Long): Long { var result = 1L var exp = exponent var base = this % modulus while (exp > 0) { if (exp and 1 == 1L) { result = result * base % modulus } base = base * base % modulus exp = exp shr 1 } return result }