HDU 2049 不容易系列之(4)——考新郎( 错排 )
链接:传送门
思路:错排水题,从N个人中选出M个人进行错排,即 C(n,m)*d[m]
补充:组合数C(n,m)能用double计算吗?第二部分有解释
Part 1.
- 分别求出来组合数的分子和分母然后相除
/*************************************************************************
> File Name: hdu2049.cpp
> Author: WArobot
> Blog: http://www.cnblogs.com/WArobot/
> Created Time: 2017年04月27日 星期四 22时50分49秒
************************************************************************/
#include<bits/stdc++.h>
using namespace std;
#define ull unsigned long long
int c,n,m;
ull d[23];
void init(){
d[1] = 0; d[2] = 1;
for(int i=3;i<23;i++) d[i] = (i-1)*(d[i-1] + d[i-2]);
}
int main(){
init();
scanf("%d",&c);
while(c--){
scanf("%d%d",&n,&m);
ull ck1 = 1 , ck2 = 1;
for(int i=1;i<=m;i++) ck1 *= (n-m+i) , ck2 *= i;
printf("%lld\n",(ck1/ck2)*d[m]);
}
return 0;
}
Part 2.
- double也是可以计算C(n,m),但是需要注意在最后强制类型转换的时候需要手动 +0.5 来手动进行四舍五入
- 可以直接输出%.25lf 来查看ck1的值
例如20 11的时候 ck1 = 167959.9999999999708961695432663
但是C(20,11) = 167960 所以有些值需要手动进位
/*************************************************************************
> File Name: hdu2049.cpp
> Author: WArobot
> Blog: http://www.cnblogs.com/WArobot/
> Created Time: 2017年04月27日 星期四 22时50分77秒
************************************************************************/
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int c,n,m;
ll d[21];
void init(){
d[1] = 0; d[2] = 1;
for(int i=3;i<=20;i++) d[i] = (i-1)*(d[i-1] + d[i-2]);
}
int main(){
init();
scanf("%d",&c);
while(c--){
scanf("%d%d",&n,&m);
double ck1 = 1;
for(int i=1;i<=m;i++) ck1 *= (n-m+i)*1.0/i;
ck1 += 0.5;
ll ans = (ll)ck1;
printf("%lldn",ans*d[m]);
}
return 0;
}
<font color = bule ,size = "4">好吧,我还因为过于无聊设置了小彩蛋,你找到这个随笔那个地方写错了吗?
HDU 2049 不容易系列之(4)——考新郎( 错排 )的更多相关文章
- hdu 2049 不容易系列之(4)——考新郎 (错排递推)
当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用M(n)表示,那么M(n-1)就表示n-1个编号元素放在n-1个编号位置,各不对应的方法数,其它类推. 第一步,把第n个元素放在一个 ...
- [HDU 2049] 不容易系列之(4)——考新郎 (错排问题)
不容易系列之(4)——考新郎 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2049 题目大意: 有N对新婚夫妇,其中所有的新娘站成一列,都盖上了红布. ...
- hdu 2049 不easy系列之(4)——考新郎
不easy系列之(4)--考新郎 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- HDU 2049 不容易系列之(4)——考新郎 (递推,含Cmn公式)
不容易系列之(4)——考新郎 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- hdu2049 不容易系列之(4)——考新郎 错排+组合 一共有N对新婚夫妇,N个新娘随机坐成一排,每个新郎只能选一个, 其中有M个新郎找错了新娘,求发生这种情况一共有多少种可能.
不容易系列之(4)——考新郎 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- HDU2049 不容易系列之(4)考新郎 —— 错排
题目链接:https://vjudge.net/problem/HDU-2049 不容易系列之(4)——考新郎 Time Limit: 2000/1000 MS (Java/Others) Me ...
- HDU 2049 不容易系列之(4)——考新郎 (错排+组合)
题目链接. Problem Description 国庆期间,省城HZ刚刚举行了一场盛大的集体婚礼,为了使婚礼进行的丰富一些,司仪临时想出了有一个有意思的节目,叫做"考新郎",具体 ...
- E - 不容易系列之(4)――考新郎 错排数公式
国庆期间,省城HZ刚刚举行了一场盛大的集体婚礼,为了使婚礼进行的丰富一些,司仪临时想出了有一个有意思的节目,叫做"考新郎",具体的操作是这样的: 首先,给每位新娘打扮得几乎一模一 ...
- hdu 2049 不容易系列之(4)——考新郎
在本博AC代码中,求CNM用的是Anm/amm没用阶乘的形式,两者皆可 #include <stdio.h> int main(void) { long long a,b,larr[21] ...
随机推荐
- C语言基础 (7) 输入输出
复习 // 定义数组时 []内部尽量用常量 // 定义数组时,数组名在同一{}内部是唯一的,不能和变量.其他数组名同名 // 使用数组时 []可以是常量,变量,表达式 // 定义一个数组,数组名字叫a ...
- 简单JavaScript小程序
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> ...
- 【JavaScript框架封装】实现一个类似于JQuery的属性框架的封装
// 属性框架 (function (xframe) { // 需要参与链式访问的(必须使用prototype的方式来给对象扩充方法) xframe.extend({ /** * 获取/设置某一个元素 ...
- HDU1867 - A + B for you again
Generally speaking, there are a lot of problems about strings processing. Now you encounter another ...
- P1422 小玉家的电费
... 题目描述 夏天到了,各家各户的用电量都增加了许多,相应的电费也交的更多了.小玉家今天收到了一份电费通知单.小玉看到上面写:据闽价电[2006]27号规定,月用电量在150千瓦时及以下部分按每千 ...
- 训练1-Z
有一头母牛,它每年年初生一头小母牛.每头小母牛从第四个年头开始,每年年初也生一头小母牛.请编程实现在第n年的时候,共有多少头母牛? Input 输入数据由多个测试实例组成,每个测试实例占一行,包括一个 ...
- MAVEN的结构认识篇
1.maven的结构认识 src main com imooc calss test com imooc test resources pom.xml 以上是maven项目存在的必须结构!如下图 te ...
- yii2-dingtalk 钉钉群机器人
说明 群机器人是钉钉群的高级扩展功能.群机器人可以将第三方服务的信息聚合到群聊中,实现自动化的信息同步.目前,大部分机器人在添加后,还需要进行Webhook配置,才可正常使用(配置说明详见操作流程中的 ...
- Python 之 格式化文件
# 结构化文件存储- xml, json- 为了解决不同设备之间的信息交换 ## XML文件(可扩展标记语言) - 标记语言:语言中使用尖括号括起来的文本字符串标记 - 可扩展:用户可以自己定义需要的 ...
- JAVA基础知识复习小结
集合 Set集合 Set集合的基本特征是元素不允许重复.HashSet不保存元素顺序,LinkedHashSet用链表保持元素的插入顺序,TreeSet可定制排序规则. HashSet的底层是用Has ...