Hduoj2068 【数学】【错排+排列组合】
2014-10-27 16:52
169 查看
/*RPG的错排 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7543 Accepted Submission(s): 3075 Problem Description 今年暑假杭电ACM集训队第一次组成女生队,其中有一队叫RPG,但做为集训队成员之一的野骆驼竟然不知道RPG三个人具体是谁谁。 RPG给他机会让他猜猜,第一次猜:R是公主,P是草儿,G是月野兔;第二次猜:R是草儿,P是月野兔,G是公主;第三次猜:R是草儿, P是公主,G是月野兔;......可怜的野骆驼第六次终于把RPG分清楚了。由于RPG的带动,做ACM的女生越来越多,我们的野骆驼想都知道她们, 可现在有N多人,他要猜的次数可就多了,为了不为难野骆驼,女生们只要求他答对一半或以上就算过关,请问有多少组答案能使他顺利过关。 Input 输入的数据里有多个case,每个case包括一个n,代表有几个女生,(n<=25), n = 0输入结束。 Sample Input 1 2 0 Sample Output 1 1 Author Rabbit Source RPG专场练习赛 *//* #include<stdio.h> __int64 cnm(__int64 x, __int64 y) { __int64 i, j, k; k = 1; for(i = x; i > x-y; i--) k *= i; j = 1; for(i = 1; i <= y; i++) j *= i; return (k/j); } __int64 cuopai[55]; int main() { __int64 i, j, k, n, m, ans; cuopai[1] = 0; cuopai[2] = 1; for(i = 3; i <= 50 ;i ++) cuopai[i] = (i-1)*(cuopai[i-1] + cuopai[i-2]); while(scanf("%I64d", &n) != EOF && n) { ans = 0; if(n & 1) m = n/2 + 1; else m = n/2; for(i = m; i < n-1; i++) { ans += (cnm(n, i));// * cuopai[n-i]); } printf("%I64d\n", ans+1); } return 0; } 错误代码 原因 当c(21,19)时超出了int64的范围*/ #include<stdio.h> __int64 cnm(__int64 x, __int64 y) { __int64 i, j, k; k = 1; for(i = x; i > x-y; i--) k *= i; j = 1; for(i = 1; i <= y; i++) j *= i; return (k/j); } __int64 cuopai[55]; int main() { __int64 i, j, k, n, m, ans; cuopai[1] = 0; cuopai[2] = 1; for(i = 3; i <= 50 ;i ++) cuopai[i] = (i-1)*(cuopai[i-1] + cuopai[i-2]); while(scanf("%I64d", &n) != EOF && n) { ans = 0; m = n/2; //修改 从小的那一面考虑 刚好不会越界 for(i = 2; i <= m; i++) { ans += (cnm(n, i)* cuopai[i]); } printf("%I64d\n", ans+1); } return 0; }
注意:本题给的数据是刚好能够用int64去完成的,但是如果从先考虑排列正确的位置后错排会溢出,如果先考虑排列错误的位置再错排就不会溢出。
相关文章推荐
- (组合数学3.1.2.1)POJ 2249 Binomial Showdown(排列组合公式的实现)
- HDU 4372 Count the Buildings(组合数学-斯特林数,组合数学-排列组合)
- 关于数学中排列组合之组合算法实现
- C语言实现数学上的组合和排列
- [bzoj2111][ZJOI2010]Perm 排列计数(组合数学)
- 使用java实现数学中的排列组合公式A和C以及阶乘
- 组合数学学习之排列、组合、圆周排列实现
- 数学排列组合,阶乘在线计算器
- UVa 11076 - Add Again (排列之和 组合数学)
- bzoj 2111: [ZJOI2010]Perm 排列计数 (组合数学+Lucas定理)
- [bzoj4517][Sdoi2016]排列计数(组合数学)
- POJ1306 组合数学之排列 基础例子(一)
- hdu 2200 AC难题 数学排列组合
- CodeForces512C-Pluses everywhere-模拟/数学/排列组合模板
- UVA 12712 Pattern Locker(简单排列组合数学题)
- (组合数学3.3.2.2)UVA 10497 - Sweet Child Makes Trouble(特殊的排列问题——错排方案数)
- 相同数不能相邻的排列问题 组合数学-容斥原理
- [BZOJ2227][Zjoi2011][找规律][排列组合][数学]看电影(movie)
- 组合数学 + STL --- 利用STL生成全排列
- 组合数学之排列组合若干题