結果
問題 |
No.1080 Strange Squared Score Sum
|
ユーザー |
![]() |
提出日時 | 2025-04-09 20:56:20 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 2,084 bytes |
コンパイル時間 | 169 ms |
コンパイル使用メモリ | 82,912 KB |
実行使用メモリ | 82,924 KB |
最終ジャッジ日時 | 2025-04-09 20:58:18 |
合計ジャッジ時間 | 7,308 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | TLE * 1 -- * 19 |
ソースコード
import sys MOD = 10**9 + 9 def main(): N = int(sys.stdin.readline().strip()) if N == 0: return # Precompute factorial and inverse factorial modulo MOD fact = [1] * (N + 1) for i in range(1, N + 1): fact[i] = fact[i-1] * i % MOD # Compute g(x) = sum_{a=1 to N} (a+1)^2 x^a g = [0] * (N+1) for a in range(1, N+1): if a > N: continue g[a] = (a + 1) ** 2 % MOD # Now compute cos(g) + sin(g) - 1 mod x^(N+1) # Initialize C (cos) and S (sin) C = [0] * (N+1) S = [0] * (N+1) C[0] = 1 # cos(0) = 1 # S[0] = 0 # sin(0) = 0 # Precompute the derivative g'(x) gp = [0] * (N) for a in range(0, N): gp[a] = ( (a+1) * ( (a+2) ** 2 ) ) % MOD # Compute C and S using dynamic programming based on their differential equations for k in range(1, N+1): # Compute C[k] using C' = -g' * S # The coefficient of x^{k-1} in C' is given by the convolution of gp and S up to x^{k-1} # C' = -gp * S conv = 0 for i in range(max(0, k-1 - (N-1)), k): if i >= len(gp): continue j = (k-1) - i if j < 0 or j > N: continue conv += gp[i] * S[j] conv %= MOD Ck = (-conv) % MOD Ck = Ck * pow(k, MOD-2, MOD) % MOD C[k] = Ck # Compute S[k] using S' = gp * C conv = 0 for i in range(max(0, k-1 - (N-1)), k): if i >= len(gp): continue j = (k-1) - i if j < 0 or j > N: continue conv += gp[i] * C[j] conv %= MOD Sk = conv * pow(k, MOD-2, MOD) % MOD S[k] = Sk # Now compute S_total = C + S - 1 S_total = [ (C[i] + S[i]) % MOD for i in range(N+1) ] S_total[0] = (S_total[0] - 1) % MOD if N >= 0: S_total[0] %= MOD for k in range(1, N+1): res = S_total[k] * fact[N] % MOD print(res) if __name__ == "__main__": main()