码迷,mamicode.com
首页 > 其他好文 > 详细

51nod1639(组合数学)

时间:2017-04-21 20:01:18      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:display   turn   printf   合数   bsp   lan   分享   closed   组合   

题目链接: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 }
View Code

 

51nod1639(组合数学)

标签:display   turn   printf   合数   bsp   lan   分享   closed   组合   

原文地址:http://www.cnblogs.com/geloutingyu/p/6745240.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!