不容易系列之——考新郎

Posted mjn1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不容易系列之——考新郎相关的知识,希望对你有一定的参考价值。

技术图片

这个道题就是求N中有多少中M个数的错排。

因此先找到N个新郎中M个错一共有几种,显然是CMN=N!/(M!*(N-M)!)。即CMN=N!/M!/(N-M)!。

然后在求出M个数的错排个数,递推关系:f[n]=(n-1)*(f[n-1]+f[n-2])

#include <cstdio>

long long int m[30];

long long int C(int n, int m)

	long long int sum = 1, j = 1;
	for(int i = n; i >= n - m + 1; -- i)
	
		sum = sum * i / j;
		j ++;
	
	return sum;


long long int f(int n)

	m[2] = 1;
	m[3] = 2;
	
	for(int i = 4; i <= n; ++ i)
	
		m[i] = (i - 1) * (m[i - 1] + m[i - 2]);
	
	
	return m[n];


int main()

	int c, n, m;
	scanf("%d", &c);
	while(c --)
	
		scanf("%d %d", &n, &m);
		printf("%lld\\n", C(n, m) * f(m));
	
	
	return 0;

  

以上是关于不容易系列之——考新郎的主要内容,如果未能解决你的问题,请参考以下文章

V - 不容易系列之――考新郎(第二季水)

不容易系列之——考新郎

D - 不容易系列之——考新郎

E - 不容易系列之――考新郎 错排数公式

hdu2049 不容易系列之——考新郎(组合,错排)

ACM_递推题目系列之二认错人