結果
問題 |
No.3178 free sort
|
ユーザー |
![]() |
提出日時 | 2025-06-22 12:30:37 |
言語 | Go (1.23.4) |
結果 |
AC
|
実行時間 | 202 ms / 2,000 ms |
コード長 | 717 bytes |
コンパイル時間 | 14,166 ms |
コンパイル使用メモリ | 252,184 KB |
実行使用メモリ | 7,848 KB |
最終ジャッジ日時 | 2025-06-22 12:31:01 |
合計ジャッジ時間 | 23,646 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 40 |
ソースコード
package main import . "fmt" import . "math/big" func main() { var n string Scan(&n) ds := make([]int, 10) for _, ch := range n { ds[int(ch)-'0']++ } const Mod = 998244353 ps := make([]int, len(n)+1) ps[0] = 1 for i := range ps[1:] { ps[i+1] = ps[i] * (i+1) % Mod } xs := make([]int, len(n)+1) xs[len(n)] = int(new(Int).ModInverse(NewInt(int64(ps[len(n)])),NewInt(Mod)).Int64()) for i := range xs[1:] { j := len(n) - i xs[j-1] = xs[j] * j % Mod } ans := 0 for i, d := range ds { if i == 0 || d == 0 { continue } m := ps[len(n)-1] for j, e := range ds { if i == j { m = m * xs[e-1] % Mod } else { m = m * xs[e] % Mod } } ans = (ans + m) % Mod } Println(ans) }