51nod1639 绑鞋带 组合数学

1639 绑鞋带
基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题
收藏
关注
有n根鞋带混在一起,现在重复n次以下操作:随机抽出两个鞋带头,把它们绑在一起。可以想象,这n次之后將不再有单独的鞋带头,n条鞋带系成了一些环。那么有多大概率刚好所有这些鞋带只形成了一个环?



Input


仅一行,包含一个整数n  (2<=n<=1000)。


Output


输出一行,为刚好成环的概率。


Input示例


2


Output示例


0.666667


思路:将n分解成一个个小的子问题。
          有 i 跟鞋带时,有 2 * i 个鞋带头,全部的情况则是 (2 * i - 1) * (  2 * (   i  - 1 )) - 1 )*....* 1 。能够连接成环的情况则是 ( i  - 1 )* 2 ^(i-1) * (i-2) * 2 ^ (i-1) *....*1.
Code:
#include 
using namespace std; 
int main()
{
	int n;
	cin >> n;
	double ans = 1.0;
	for( int i = 2 ; i <= n ; i++ ){
		ans = ans * 2 * (i-1) / (2 * i - 1);
	}
	printf("%.6lf\n",ans);
	return 0;
}

你可能感兴趣的:(数学-公式)