No.2381 Gift Exchange Party
レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限
: 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 110
作問者 : 箱星 / テスター : 👑 Kazun
タグ : / 解いたユーザー数 110
作問者 : 箱星 / テスター : 👑 Kazun
問題文最終更新日: 2023-05-19 20:21:03
問題文
プレゼント交換会に $N$ 人が集まりました。どの人も $1$ つのプレゼントを持っています。
$(1,2,\ldots,N)$ の順列 $(A_1,A_2,\ldots,A_N)$ を選びます。その後、次の行為を $P$ 回行います。($P$ は素数)
- 各 $i=1,2,\ldots,N$ に対して、$i$ 番目の人は $A_i$ 番目の人に持っているプレゼントを一斉に渡す。
この行為の後、少なくとも $1$ 人が最初に持っていたプレゼントと異なるプレゼントを持っているときプレゼント交換会は成功、そうでないとき失敗となります。
プレゼント交換会が成功するような順列 $(A_1,A_2,\ldots,A_N)$ の個数を $998244353$ で割った余りを求めてください。
制約
- $N$ は $1\le N\le 2\times 10^5$ をみたす整数
- $P$ は $2\le P\lt 998244353$ をみたす素数
入力
$N$ $P$
出力
条件を満たす順列の個数を $998244353$ で割った余りを出力してください。
サンプル
サンプル1
入力
3 2
出力
2
$(2,3,1)$ と $(3,1,2)$ が条件を満たします。
サンプル2
入力
1 11
出力
0
サンプル3
入力
69403 3001
出力
435305430
$998244353$ で割った余りを求めてください。
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。