結果

問題 No.3538 Not First Place
コンテスト
ユーザー nauclhlt
提出日時 2026-02-28 15:39:03
言語 PyPy3
(7.3.17)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
AC  
実行時間 1,197 ms / 5,000 ms
コード長 1,027 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 341 ms
コンパイル使用メモリ 85,292 KB
実行使用メモリ 280,704 KB
最終ジャッジ日時 2026-05-08 20:50:36
合計ジャッジ時間 8,260 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge3_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 26
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import sys

def solve():
    N, M, K, L = map(int, input().split())
    
    MOD = 998244353

    MAX = N + M * K + 10
    fact = [1] * (MAX + 1)
    factinv = [1] * (MAX + 1)
    inv = [1] * (MAX + 1)

    for p in range(1, MAX + 1):
        fact[p] = (fact[p - 1] * p) % MOD
        if p > 1:
            inv[p] = (-(MOD // p) * inv[MOD % p]) % MOD
        factinv[p] = (factinv[p - 1] * inv[p]) % MOD

    def combination(n, r):
        if r < 0 or n < 0 or r > n:
            return 0
        return (fact[n] * ((factinv[r] * factinv[n - r]) % MOD)) % MOD

    ans = 0

    m = [0] * N
    for i in range(0, N):
        m[i] = combination(N - 1, i)

    for x in range(L, M + 1):
        min1 = 1
        c = N - 2 + M * K - x
        
        for i in range(0, N):
            val = (m[i] * ((combination(c - (M + 1) * i, N - 2) - combination(c - (x + 1) * i, N - 2)) % MOD)) % MOD
            ans = (ans + val * min1) % MOD
            
            min1 *= -1

    print(ans % MOD)

if __name__ == "__main__":
    solve()
0