首页 > 代码库 > 51nod1639(组合数学)
51nod1639(组合数学)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1639
题意:中文题诶~
思路:组合数学
n根鞋带要组成一个环,那么显然与连成一根鞋带之前不成环是冲要条件;
假设当前还剩下 i (i>1) 根鞋带,要从中选择两根鞋带头连接后不成环的概率为 pi = 不成环的选择方法数 / 所有选择方法数
所有方法数 = C(2*i, 2) = 2 * i * (2*i - 1) / 2 = i * (2*i - 1)
成环的方法数 = C(i, 1) = i
不成环的方法数 = 所有方法数 - 成环方法数 = i * (2*i - 2)
所以 pi = 不成环的选择方法数 / 所有选择方法数 = (2*i - 2) / (2*i - 1)
由此得到了i > 1时的 pi;
对于每一个 i 的情况都可以看作是相互独立的事件,那么显然有 p = ∑pi = ∑(2*i - 2) / (2*i - 1) (2 =< i <= n);
代码:
1 #include <iostream> 2 #include <stdio.h> 3 using namespace std; 4 5 int main(void){ 6 int n; 7 double p=1; 8 scanf("%d", &n); 9 for(int i=n; i>1; i--){ 10 p*=(double)(2*i-2)/(2*i-1); 11 } 12 printf("%.6lf\n", p); 13 return 0; 14 }
51nod1639(组合数学)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。