杭电 2049 不容易系列之(4)——考新郎

36 篇文章 0 订阅
33 篇文章 0 订阅
<h1 style="color:#1A5CC8">不容易系列之(4)——考新郎</h1><strong><span style="font-family:Arial;font-size:12px;color:green;font-weight:bold;">Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 32811    Accepted Submission(s): 12001
</span></strong>

<div class="panel_title" align="left">Problem Description</div> <div class="panel_content">国庆期间,省城HZ刚刚举行了一场盛大的集体婚礼,为了使婚礼进行的丰富一些,司仪临时想出了有一个有意思的节目,叫做"考新郎",具体的操作是这样的:
<img style="max-width:100%;" src="http://acm.split.hdu.edu.cn/data/images/C40-1007-1.gif" alt="" />

首先,给每位新娘打扮得几乎一模一样,并盖上大大的红盖头随机坐成一排;
然后,让各位新郎寻找自己的新娘.每人只准找一个,并且不允许多人找一个.
最后,揭开盖头,如果找错了对象就要当众跪搓衣板...

看来做新郎也不是容易的事情...

假设一共有N对新婚夫妇,其中有M个新郎找错了新娘,求发生这种情况一共有多少种可能.
</div><div class="panel_bottom"> </div>
<div class="panel_title" align="left">Input</div> <div class="panel_content">输入数据的第一行是一个整数C,表示测试实例的个数,然后是C行数据,每行包含两个整数N和M(1<M<=N<=20)。
</div><div class="panel_bottom"> </div>
<div class="panel_title" align="left">Output</div> <div class="panel_content">对于每个测试实例,请输出一共有多少种发生这种情况的可能,每个实例的输出占一行。
</div><div class="panel_bottom"> </div>
<div class="panel_title" align="left">Sample Input</div><div class="panel_content"><pre><div style="font-family:Courier New,Courier,monospace;">2
2 2
3 2</div>
 

Sample Output
  
  
1 3
 

Author
lcy
 

Source


#include<stdio.h>//不容易系列之(4)——考新郎int main(){ __int64 f[22],k[22]; int i,j,n,m,c; while(EOF!=scanf("%d",&c)) { while(c--) { scanf("%d%d",&n,&m);//读入 k[0]=1; for(j=1;j<23;j++) { k[j]=j*k[j-1];//对阶乘的预处理 } for(i=0;i<m;i++) { f[1]=0;f[2]=1; for(i=3;i<=m;i++) f[i]=(i-1)*(f[i-1]+f[i-2]);//错排公式 } if(m<n)//避免出现k[n-m]为0,即除数为0的情况 printf("%I64d\n",f[m]*(k[n]/k[m])/k[n-m]);//错排公式*排列几何的公式 else printf("%I64d\n",f[m]); } } return 0;}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值