#include<cstdio>
#include<cstring>
#define MOD 9999991
#define LL long long
LL c[36][36];
int ch[36][2],num[36];
using namespace std;
void init(){
c[0][0]=1;
for(int i=1;i<=23;i++){
c[i][i]=1;c[i][0]=1;
for(int j=1;j<i;j++){
c[i][j]=(c[i-1][j]+c[i-1][j-1])%MOD;
}
}
}
void insert(int &x,int v){
if(!x){
x=v;
num[x]=1;
return ;
}
num[x]++;
if(v<x) insert(ch[x][0],v);
else insert(ch[x][1],v);
}
LL dfs(int x){
if(!x) return 1;
if(!ch[x][0]&&!ch[x][1]) return 1;
return dfs(ch[x][0])*dfs(ch[x][1])*c[num[x]-1][num[ch[x][0]]]%MOD;
}
int main(){
int T,t,rt,n;
init();
scanf("%d",&T);
while(T--){
memset(ch,0,sizeof(ch));
scanf("%d",&n);
rt=0;
for(int i=0;i<n;i++){
scanf("%d",&t);
insert(rt,t);
}
printf("%lld\n",dfs(rt));
}
}
uva 1264 Binary Search Tree 计数
最新推荐文章于 2022-07-04 23:04:59 发布