結果
問題 |
No.2141 Enumeratest
|
ユーザー |
![]() |
提出日時 | 2025-05-10 00:02:46 |
言語 | Go (1.23.4) |
結果 |
AC
|
実行時間 | 29 ms / 2,000 ms |
コード長 | 576 bytes |
コンパイル時間 | 12,056 ms |
コンパイル使用メモリ | 246,616 KB |
実行使用メモリ | 18,148 KB |
最終ジャッジ日時 | 2025-05-10 00:03:01 |
合計ジャッジ時間 | 14,188 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 34 |
ソースコード
package main import . "fmt" import . "math/big" func main() { var n, m int Scan(&n,&m) if n == 1 { Println(1) return } const V = 1e6 const Mod = 998244353 a := make([]int, V+1) a[0] = 1 for i := range a[1:] { a[i+1] = a[i]*(i+1)%Mod } b := make([]int, V+1) z := new(Int).ModInverse(NewInt(int64(a[V])), NewInt(Mod)) b[V] = int(z.Int64()) for i := range b[1:] { j := V - i b[j-1] = b[j]*j%Mod } d := m / n ans := a[m] for i := 0; i < n; i++ { if i < m % n { ans = ans * b[d+1] % Mod } else { ans = ans * b[d] % Mod } } Println(ans) }