W - 不容易系列之(4)——考新郎 HDU - 2049 (错排思想和排列组合)

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include <ctype.h>

#include <string.h>


const  int max=40;

//相同的错排思想。m个新郎全部找错。则从n中选出n-m个新郎找对了新娘

//错排公式M(n)=(n-1)*(M(n-1)+M(n-2))

long long f(int m){

    if(m==1)return 0;

    if(m==2)return 1;

    return (m-1)*(f(m-1)+f(m-2));

}

long long pailie(int n,int m){

    long long s1=1,s2=1;

    for(int i=1;i<=m;i++)

        s2*=i;

    for(int i=n;i>n-m;i--)

        s1*=i;

    return s1/s2;

}

int main(){

    int m,n,c;

    scanf("%d",&c);

    while(c--){

        scanf("%d %d",&n,&m);

        printf("%lld\n",f(m)*pailie(n,m));

    }

    

    return 0;

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值