結果
| 問題 |
No.1321 塗るめた
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2020-12-18 03:15:29 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,054 bytes |
| コンパイル時間 | 72 ms |
| コンパイル使用メモリ | 12,800 KB |
| 実行使用メモリ | 123,584 KB |
| 最終ジャッジ日時 | 2024-09-21 08:50:29 |
| 合計ジャッジ時間 | 7,263 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 TLE * 1 |
| other | -- * 45 |
ソースコード
import numpy as np
p=998244353
def mul(a, b, MOD=p):
fft=np.fft
def submul(f,g):
L=len(f)+len(g)-1
return fft.irfft(fft.rfft(f,L)*fft.rfft(g,L),L)%MOD
al=a&(1<<15)-1
bl=b&(1<<15)-1
ah=a>>15
bh=b>>15
x,y,z=submul(al,bl),submul(ah,bh),submul(al+ah,bl+bh)
x,y,z=map(lambda v:(v+.5).astype(np.int64),[x,y,z])
return (x+(y<<30)+((z-x-y)<<15))%MOD
fac=[1, 1]
inv=[1, 1]
ifac=[1, 1]
for i in range(2, int(2e5)):
fac.append(fac[-1]*i%p)
inv.append(p-inv[p%i]*(p//i)%p)
ifac.append(ifac[-1]*inv[i]%p)
def fpow(a, n):
if n==0:
return np.array([1])
else:
ret=fpow(mul(a, a)[:10**5+10], n//2)[:10**5+10]
if n%2==1:
ret=mul(a, ret)[:10**5+10]
return ret
def comb(n, k):
return fac[n]*ifac[n-k]%p*ifac[k]%p
N,M,K=map(int,input().split())
f=np.array([0]*(10**5+10))
for i in range(len(f)):
f[i]=ifac[i]
f[0]=0
f=fpow(f,K)
ans=0
for i in range(K,N+1):
ans+=comb(N, i)*comb(M, K)%p*pow(M,N-i,p)%p*f[i]%p*fac[i]%p
ans%=p
print(ans)