結果

問題 No.1348 Split Tile
ユーザー 👑 SPD_9X2SPD_9X2
提出日時 2021-01-16 14:30:22
言語 PyPy3
(7.3.13)
結果
AC  
実行時間 448 ms / 2,000 ms
コード長 1,193 bytes
コンパイル時間 344 ms
コンパイル使用メモリ 87,288 KB
実行使用メモリ 160,560 KB
最終ジャッジ日時 2023-08-18 11:33:20
合計ジャッジ時間 10,131 ms
ジャッジサーバーID
(参考情報)
judge11 / judge14
このコードへのチャレンジ(β)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 77 ms
71,356 KB
testcase_01 AC 85 ms
76,064 KB
testcase_02 AC 114 ms
81,912 KB
testcase_03 AC 411 ms
151,100 KB
testcase_04 AC 323 ms
128,672 KB
testcase_05 AC 156 ms
89,840 KB
testcase_06 AC 124 ms
85,628 KB
testcase_07 AC 441 ms
160,392 KB
testcase_08 AC 335 ms
129,400 KB
testcase_09 AC 310 ms
123,324 KB
testcase_10 AC 412 ms
151,472 KB
testcase_11 AC 125 ms
86,380 KB
testcase_12 AC 260 ms
113,328 KB
testcase_13 AC 345 ms
135,352 KB
testcase_14 AC 275 ms
117,744 KB
testcase_15 AC 364 ms
135,924 KB
testcase_16 AC 258 ms
113,112 KB
testcase_17 AC 184 ms
96,180 KB
testcase_18 AC 331 ms
129,252 KB
testcase_19 AC 244 ms
109,252 KB
testcase_20 AC 254 ms
113,204 KB
testcase_21 AC 221 ms
105,444 KB
testcase_22 AC 411 ms
151,544 KB
testcase_23 AC 423 ms
151,748 KB
testcase_24 AC 408 ms
151,344 KB
testcase_25 AC 432 ms
152,388 KB
testcase_26 AC 421 ms
151,768 KB
testcase_27 AC 448 ms
160,560 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

"""

各タイルに関して、
取り除かれていないが、i-1番目は取り除かれている
の場合の数を数え上げればよい

t回操作終了後、自分が取り除かれていない & i-1番目が取り除かれている場合の数は
C(N-1,t-1) * fac(t)

左端に関しては、自分が取り除かれないだけ考える
C(N-1,t) * fac(t)

後半の fac(N-t) もかければ終わり

"""

from sys import stdin

def modfac(n, MOD):
 
    f = 1
    factorials = [1]
    for m in range(1, n + 1):
        f *= m
        f %= MOD
        factorials.append(f)
    inv = pow(f, MOD - 2, MOD)
    invs = [1] * (n + 1)
    invs[n] = inv
    for m in range(n, 1, -1):
        inv *= m
        inv %= MOD
        invs[m - 1] = inv
    return factorials, invs


def modnCr(n,r): #上で求めたfacとinvsを引数に入れるべし(上の関数で与えたnが計算できる最大のnになる)
    if n < r:
        return 0
    return fac[n] * inv[n-r] * inv[r] % mod

mod = 998244353
N = int(stdin.readline())
fac,inv = modfac(N+100,mod)

ans = 0
for t in range(1,N):
    ans += fac[N-t] * fac[t] * (modnCr(N-2,t-1) * (N-1) + modnCr(N-1,t))
    ans %= mod
print (ans)
0