__int64 com(
int n,
int m) {
int i;
__int64 top =
1,bottom =
1;
for(i =
1;i <=
m;i ++){
bottom = bottom * i;
}
for(i = n;i > n-
m;i--) {
top = top * i;
}
return top/bottom;
}
int main() {
int m,n,sum,i;
__int64 a[
21];
a[
1] =
0;
a[
2] =
1;
for(i =
3;i <=
20;i ++) {
a[i] = (a[i-
1] + a[i-
2]) * (i-
1);
}
scanf(
"%d",&sum);
while(sum--) {
scanf(
"%d %d",&n,&
m);
printf(
"%I64d\n",com(n,
m)
*a[
m]);
}
}
转载请注明原文地址: https://ju.6miu.com/read-18404.html