
2 2 2 3 2
1 3
#include <stdio.h>
typedef long long ll ;
ll f[30] ;
ll combination(ll n , ll m)
{
ll ans = 1 ;
for(ll i = n ; i > n-m ; --i)
{
ans *= i ;
}
for(ll i = m ; i > 0 ; --i)
{
ans /= i ;
}
return ans ;
}
int main()
{
int t ;
scanf("%d",&t);
f[0] = 1 ;
f[1] = 0 , f[2] = 1 ;
for(int i = 3 ; i <= 20 ; ++i)
{
f[i] = (i-1)*(f[i-1]+f[i-2]) ;
}
while(t--)
{
ll n , m ;
scanf("%I64d%I64d",&n,&m) ;
ll ans = combination(n,m)*f[m] ;
printf("%I64d\n",ans) ;
}
return 0 ;
}原文地址:http://blog.csdn.net/lionel_d/article/details/45532031