この問題は、プライマリ数学オリンピックああです。
質問の意味:シーク\(m個\)隣接するプログラム番号ペアワイズ異なるアイテム。
直接の順列。
我々は、彼らが空い間の最小のビット数を必要失う可能性が- \ (M-1 \)欠損を
したがって、我々は左使用\(M-1 \)それらが隣接ペアワイズすることができるように、2つの中間体物品の各々に空孔。
だから、残りの場所の\(N-M + 1 \ ) 欠員。
問題は、この問題に変換されます。
所与\(N-M + 1 \ ) プログラムの異なるアイテムのm個に、座席。
うまく直接配置。
\(年\) = \(A_ {N-M + 1} ^ {M} \)
#include<bits/stdc++.h>
using namespace std;
int type,n,m,mod,cnt;
long long ans=1;
int main()
{
scanf("%d%d%d%d",&type,&n,&m,&mod);
for(int i=n-m+1;i>=n-2*m+2;i--)
{
ans=(ans*i)%mod;
}
printf("%lld\n",ans);
return 0;
}