結果
問題 |
No.3027 f-列とh-列
|
ユーザー |
![]() |
提出日時 | 2025-02-21 22:52:08 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 44 ms / 2,000 ms |
コード長 | 867 bytes |
コンパイル時間 | 375 ms |
コンパイル使用メモリ | 82,572 KB |
実行使用メモリ | 54,152 KB |
最終ジャッジ日時 | 2025-02-21 22:52:14 |
合計ジャッジ時間 | 2,474 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 21 |
ソースコード
mod = 998244353 n = 100 inv = [1 for j in range(n + 1)] for a in range(2, n + 1): # ax + py = 1 <=> rx + p(-x - qy) = -q => x = -(inv[r]) * (p // a) (r = p % a) res = (mod - inv[mod % a]) * (mod // a) inv[a] = res % mod fact = [1 for i in range(n + 1)] for i in range(1, n + 1): fact[i] = fact[i - 1] * i % mod fact_inv = [1 for i in range(n + 1)] fact_inv[-1] = pow(fact[-1], mod - 2, mod) for i in range(n, 0, -1): fact_inv[i - 1] = fact_inv[i] * i % mod def binom(n, r): if n < r or n < 0 or r < 0: return 0 res = fact_inv[n - r] * fact_inv[r] % mod res *= fact[n] res %= mod return res N = int(input()) F = list(map(int, input().split())) F = F[::-1] H = [0 for _ in range(N + 1)] for n in range(N + 1): for i in range(n + 1): c = 1 if i % 2: c = -1 c *= binom(n, i) H[n - i] += c * F[n] H = H[::-1] print(*H)