LG·超级蚯蚓【数论·期望】

Description–

将两条超级蚯蚓的头或尾端接触,他们的头或尾会连接起来。

现在有n条这样的超级蚯蚓,重复n次以下操作:

  • 随机抽出两条超级蚯蚓,使它们的头或尾接触。

可以发现n次操作之后将不再有条状蚯蚓,它们连接成了一些环。

那么有多大概率刚好所有这些超级蚯蚓只连成了一个环?


Input–

仅一行,包含一个整数 n n n

Output–

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


Sample Input–

样例1

2

样例2

3

样例3

5

Sample Output–

样例1

0.666667

样例2

0.533333

样例3

0.406349

说明–

2 < = n < = 1000 2<=n<=1000 2<=n<=1000


解题思路–

(不用关注蚯蚓的头和尾,就把它看成线段就行辽)
我们先看 n = 2 n = 2 n=2 的时候
此时有 6 6 6 种情况

  • 1 1 1在这里插入图片描述

  • 2 2 2在这里插入图片描述

  • 3 3 3在这里插入图片描述

  • 4 4 4在这里插入图片描述

  • 5 5 5在这里插入图片描述

  • 6 6 6在这里插入图片描述

可以发现,因为连完一次剩下的两个点必须连起来,于是有6种情况,其中有4种是合法的,答案就为 4 / 6


然后我们再看 n = 3 n = 3 n=3 的情况在这里插入图片描述
对于每个A点(任意一个点)都可以到别的端点,如图,橙色的是合法的,黄色的是不合法的,则第一步合法的概率为4 / 5,任意连一个合法的点,则 (某画图太难画了于是换了个介个233333)在这里插入图片描述
可见点 2 (也就是前一个图的点A)连接了点 4 (合法的就行),即为
在这里插入图片描述
(加粗的是端点)即为在这里插入图片描述
wow,这不是 n = 2 的情况吗(假装震惊)把 n = 2 时的结果命名为 f[2]
所以 f[3] = (4 / 5) * f[2]

所以 f[n] = 2 n − 2 2 n − 1 \frac{2n - 2}{2n - 1} 2n12n2 * f[n - 1]


代码–

#include <iostream>
#include <cstdio>
#define db double 

using namespace std;

int n;
db f[1005];

int main()
{
	scanf("%d", &n);
	f[2] = (db)2 / (db)3;
	for (int i = 3; i <= n; ++i)
	  f[i] = f[i - 1] * (2 * (db)(i - 1) / (db)(2 * (i - 1) + 1));
	printf("%.6lf", f[n]);
	
	
	return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值