結果
| 問題 | No.1357 Nada junior high school entrance examination 3rd day | 
| コンテスト | |
| ユーザー |  lam6er | 
| 提出日時 | 2025-04-16 15:59:40 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                TLE
                                 
                             | 
| 実行時間 | - | 
| コード長 | 1,881 bytes | 
| コンパイル時間 | 186 ms | 
| コンパイル使用メモリ | 81,600 KB | 
| 実行使用メモリ | 51,980 KB | 
| 最終ジャッジ日時 | 2025-04-16 16:02:50 | 
| 合計ジャッジ時間 | 4,256 ms | 
| ジャッジサーバーID (参考情報) | judge4 / judge3 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 1 | 
| other | TLE * 1 -- * 20 | 
ソースコード
MOD = 998244353
def main():
    import sys
    K = int(sys.stdin.readline())
    max_n = 2 * K + 1
    # Precompute factorial and inverse factorial modulo MOD
    factorial = [1] * (max_n + 1)
    for i in range(1, max_n + 1):
        factorial[i] = factorial[i-1] * i % MOD
    inv_factorial = [1] * (max_n + 1)
    inv_factorial[max_n] = pow(factorial[max_n], MOD-2, MOD)
    for i in range(max_n-1, -1, -1):
        inv_factorial[i] = inv_factorial[i+1] * (i+1) % MOD
    
    # Precompute Bernoulli numbers B_2, B_4, ..., B_{2K}
    bernoulli = [0] * (K + 1)  # bernoulli[0] unused, bernoulli[a] is B_{2a}
    if K >= 1:
        # B_2 = 1/6
        inv6 = pow(6, MOD-2, MOD)
        bernoulli[1] = inv6
    
    for a in range(2, K + 1):
        sum_s = 0
        n = 2 * a + 1
        for k in range(1, a):
            # Compute C(n, 2k)
            c = factorial[n] * inv_factorial[2*k] % MOD
            c = c * inv_factorial[n - 2*k] % MOD
            sum_s = (sum_s + c * bernoulli[k]) % MOD
        # numerator = (2a-1)/2 - sum_s
        numerator = (2 * a - 1) * pow(2, MOD-2, MOD) % MOD
        numerator = (numerator - sum_s) % MOD
        denominator = 2 * a + 1
        inv_denominator = pow(denominator, MOD-2, MOD)
        bernoulli[a] = numerator * inv_denominator % MOD
    
    # Compute the coefficients c_0, c_1, ..., c_{2K}
    result = [0] * (2 * K + 1)
    for a in range(1, K + 1):
        # Compute c_{2a} = (2^{2a-1} * B_{2a} * (-1)^{a+1}) / (2a)!
        pow2 = pow(2, 2*a - 1, MOD)
        sign = 1 if (a + 1) % 2 == 0 else MOD - 1
        term = pow2 * sign % MOD
        term = term * bernoulli[a] % MOD
        term = term * inv_factorial[2*a] % MOD
        result[2*a] = term
    
    # Output the result
    output = []
    for coeff in result:
        output.append(str(coeff))
    print(' '.join(output))
if __name__ == '__main__':
    main()
            
            
            
        