HDUOJ:【5】不容易系列之(4)——考新郎
作者:互联网
原题目:
主要思路:
这个问题主要是一个组合和错排相结合的问题:
- 一共N对夫妻,选出M个是进行错排的,是一个组合问题.
- 对M对进行错排,利用错排迭代公式:
D(n) = (n-1) [D(n-2) + D(n-1)],其中D(1) = 0, D(2) = 1.
源代码:
#include <iostream>
using namespace std;
unsigned long long int stairs(unsigned long long int X)
{
if(X == 0)
{
return 1;
}
unsigned long long int i = 1;
unsigned long long int result = 1;
for(i = 1; i <= X; i++)
{
result *= i;
}
return result;
}
int main()
{
unsigned long long int x;
int c;
int n[1000];
int m[1000];
unsigned long long int result[1000];
unsigned long long int cuo[21];
cuo[1] = 0;
cuo[2] = 1;
for(int i = 3; i <= 20; i++)
{
cuo[i] = (i-1)*(cuo[i-1] + cuo[i-2]);
}
scanf("%llu",&c);
for(int i = 0; i < c; i++)
{
scanf("%d %d", &n[i], &m[i]);
n[i] = n[i] - m[i];
result[i] = (stairs(n[i]+m[i])/(stairs(n[i])*stairs(m[i])))*cuo[m[i]];
}
for(int i = 0; i < c; i++)
{
printf("%llu\n",result[i]);
}
return 0;
}
Alex_497259 发布了6 篇原创文章 · 获赞 0 · 访问量 130 私信 关注
标签:源代码,系列,int,HDUOJ,unsigned,long,文章,错排,新郎 来源: https://blog.csdn.net/Alex497259/article/details/104057207