結果

問題 No.2141 Enumeratest
ユーザー ID 21712
提出日時 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
権限があれば一括ダウンロードができます

ソースコード

diff #

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)
}
0