光棍节的快乐
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
2
描述
光棍们,今天是光棍节。聪明的NS想到了一个活动来丰富这个光棍节。
规则如下:
每个光棍在一个纸条上写一个自己心仪女生的名字,然后把这些纸条装进一个盒子里,这些光 棍依次抽取一张纸条,如果上面的名字就是自己心仪的女生,那么主持人就在现场给该女生打电话,告诉这个光棍对她的爱慕之情,并让光棍当场表白,并得到现场所有人的祝福,没抽到的,嘿嘿就可以幸免了。
假设一共有N个光棍,其中有M个没有抽到自己的纸条,求发生这种情况一共有多少种可能.。
-
输入
- 每行包含两个整数N和M(1<M<=N<=20),以EOF结尾。 输出
- 对于每个测试实例,请输出一共有多少种发生这种情况的可能,每个实例的输出占一行。
2 2 3 2
1 3
排列组合,
注意还要有错排的情况,需要错排公式,然后两种情况相乘就得到了....
错排公式:
d[1]=0;d[2]=1;
d[i]=(i-1)*(d[i-1]+d[i-2]);(i>2)
#include<stdio.h>
long long x[21],y[21];
void db()
{
y[1]=0;x[0]=x[1]=y[2]=1;x[2]=2;
for(int i=3;i<21;++i)
{
x[i]=x[i-1]*i;
y[i]=(i-1)*(y[i-1]+y[i-2]);
}
}
int main()
{
int n,m;db();
while(~scanf("%d%d",&n,&m))
{
printf("%lld\n",x[n]/x[m]/x[n-m]*y[m]);
}
return 0;
}