結果
| 問題 |
No.3178 free sort
|
| コンテスト | |
| ユーザー |
ID 21712
|
| 提出日時 | 2025-06-22 13:12:29 |
| 言語 | Go (1.23.4) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 795 bytes |
| コンパイル時間 | 12,069 ms |
| コンパイル使用メモリ | 251,104 KB |
| 実行使用メモリ | 12,008 KB |
| 最終ジャッジ日時 | 2025-06-22 13:13:01 |
| 合計ジャッジ時間 | 29,926 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 5 |
| other | WA * 40 |
ソースコード
package main
import . "fmt"
const Mod = 998244353
func main() {
var n string
Scan(&n)
ds := make([]int, 10)
for _, ch := range n {
ds[int(ch)-'0']++
}
xs := make([]int, len(n)+1)
for i := range xs {
for _, d := range ds {
if i <= d {
xs[i]++
}
}
}
ans := 0
for i, d := range ds {
if i == 0 || d == 0 {
continue
}
xs[d]--
ans += calc(len(n)-1, xs)
ans %= Mod
xs[d]++
}
Println(ans)
}
func calc(n int, xs []int) int {
cs := make([]int, n+1)
for i := range cs {
cs[i] = i
}
for i := range xs {
j := len(xs)-1 - i
if j == 0 {
break
}
x := xs[j]
m := n / j
for k := m; x > 0 && k >= 1; k-- {
for x > 0 && cs[k*j] % j == 0 {
cs[k*j] /= j
x--
}
}
}
r := 1
for _, c := range cs[1:] {
r = r * c % Mod
}
return r
}
ID 21712