这篇博客是从旧博客 WordPress 迁移过来,内容可能存在转换异常。
题目地址:
http://acm.hdu.edu.cn/showproblem.php?pid=2049
这题很好,算是错排公式的扩展!
// Author: Tanky Woo
// HDOJ 2049
#include
#include
using namespace std;
__int64 fib(int a)
{
__int64 sum=1;
for(int i=1; i<=a; ++i)
sum *= i;
return sum;
}
__int64 cuopai[22];
int main()
{
cuopai[1] = 0;
cuopai[2] = 1;
for(int i=3; i<=20; ++i)
cuopai[i] = (i-1)*(cuopai[i-1]+cuopai[i-2]);
int nCases;
scanf("%d", &nCases;);
int m, n;
while(nCases--)
{
scanf("%d %d", &n;, &m;);
printf("%I64d\n", fib(n)/(fib(m)*fib(n-m))*cuopai[m]);
}
return 0;
//printf("%I64d\n", cuopai[20]);
}