#include<bits/stdc++.h>
#define LL long long
#define clr(x,i) memset(x,i,sizeof(x))
using namespace std;
const int N=10005,KK=12;
int n,K,p,f[N*KK][KK],ans;
void solve()
{
scanf("%d%d%d",&n,&K,&p);
f[0][0]=1;
for(int i=1; i<=n*K; i++){
for(int j=1; j<=i&&j<=K; j++)
{
f[i][j]=(f[i-j][j]+f[i-j][j-1])%p;
if(i>n)
f[i][j]=(f[i][j]-f[i-(n+1)][j-1]+p)%p;
}
}
ans=0;
for(int i=0;i<=K;i++)
for(int j=0;j<=n*K;j++){
ans+=f[j][i]*f[j][K-i]%p;ans%=p;
if(i<K)
ans+=f[j][i]*f[j][K-i-1],ans%=p;
}
}
int main()
{
int cas;scanf("%d",&cas);
while(cas--)
{
solve();
printf("%d\n",ans);
}
return 0;
}
BZOJ3612 [Heoi2014]平衡 递推 整数划分
猜你喜欢
转载自blog.csdn.net/Wolf_Reiser/article/details/78555607
今日推荐
周排行