結果
| 問題 |
No.2484 Add to Variables
|
| コンテスト | |
| ユーザー |
mymelochan
|
| 提出日時 | 2023-09-23 12:30:17 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 102 ms / 2,000 ms |
| コード長 | 1,293 bytes |
| コンパイル時間 | 448 ms |
| コンパイル使用メモリ | 82,348 KB |
| 実行使用メモリ | 84,608 KB |
| 最終ジャッジ日時 | 2024-07-16 12:07:20 |
| 合計ジャッジ時間 | 4,933 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 39 |
ソースコード
#############################################################
import sys
sys.setrecursionlimit(10**7)
from heapq import heappop,heappush
from collections import deque,defaultdict,Counter
from bisect import bisect_left, bisect_right
from itertools import product,combinations,permutations
ipt = sys.stdin.readline
def iin():
return int(ipt())
def lmin():
return list(map(int,ipt().split()))
MOD = 998244353
U=5*10**5
fact=[1]*(U+1)
invfact=[1]*(U+1)
for i in range(1,U+1):fact[i]=fact[i-1]*i%MOD
invfact[U]=pow(fact[U],MOD-2,MOD)
for i in range(U-1,-1,-1):invfact[i]=invfact[i+1]*(i+1)%MOD
def nCr(n,r):
if n<0 or r<0 or n-r<0:return 0
return fact[n]*invfact[r]%MOD*invfact[n-r]%MOD
def nPr(n,r):
if n<0 or r<0 or n-r<0:return 0
return fact[n]*invfact[n-r]%MOD
#############################################################
N,M = lmin()
B = lmin()
"""
for i in range(1,N-1):
if B[i] > B[i-1] and B[i] > B[i+1]:
print(0)
exit()
"""
ans = 0
for i in range(min(B[3]+1,B[1]+1)):
tmp = 1
tmp *= nCr(B[3],i)
tmp %= MOD
tmp *= nCr(M-B[3],B[1]-i)
tmp %= MOD
tmp *= nCr(M-B[3]+i-B[1]+i,B[0]-B[1]+i)
tmp %= MOD
tmp *= nCr(M-i-(M-B[3]-(B[1]-i)),B[2]-i)
tmp %= MOD
ans += tmp
ans %= MOD
print(ans*nCr(M,B[3])%MOD)
mymelochan