L - k!
Editorial
/


Time Limit: 3.5 sec / Memory Limit: 1024 MiB
配点 : 100 点
問題文
T 個のテストケースについて、以下の問題に答えてください。
正整数 N 及び素数 P が与えられます。\displaystyle\prod_{k=1}^N k! を P で割った余りを求めてください。
制約
- 1 \leq T \leq 10
- 1 \leq N \leq 10^9
- 2 \leq P \leq 10^9+9
- P は素数
- 入力は全て整数
部分点
- T \leq 5 を満たすデータセットに正解した場合は、40 点与えられる。
- 追加制約のないデータセットに正解した場合は、上記とは別に 60 点与えられる。
入力
入力は以下の形式で標準入力から与えられる。
T \text{case}_1 \text{case}_2 \vdots \text{case}_T
各テストケースは以下の形式で与えられる。
N P
出力
各テストケースについて、改行区切りで答えを出力せよ。
入力例 1
3 3 998244353 1 1000000007 100 998244353
出力例 1
12 1 26505319
1 つ目のケースについて、\displaystyle\prod_{k=1}^3 k!=1 \times 2 \times 6=12 なので、998244353 で割った余りは 12 です。