結果
問題 |
No.3178 free sort
|
ユーザー |
![]() |
提出日時 | 2025-06-13 21:29:12 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 80 ms / 2,000 ms |
コード長 | 416 bytes |
コンパイル時間 | 298 ms |
コンパイル使用メモリ | 82,184 KB |
実行使用メモリ | 103,788 KB |
最終ジャッジ日時 | 2025-06-13 21:29:24 |
合計ジャッジ時間 | 4,706 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 40 |
ソースコード
M=998244353 s=input() n=len(s) c=[s.count(str(i)) for i in range(10)] N=n fa=[1] for i in range(1,N+1): fa+=[fa[-1]*i%M] fb=[pow(fa[N],M-2,M)] for i in reversed(range(1,N+1)): fb+=[fb[-1]*i%M] fb.reverse() fc=lambda n,k:fa[n]*fb[k]*fb[n-k]%M if n>=k>=0 else 0 a1=fa[n] for i in range(10): a1*=fb[c[i]] a1%=M a2=0 if c[0]>0: a2=fa[n-1] for i in range(10): a2*=fb[c[i]-(i==0)] a2%M print((a1-a2)%M)