良好的合作有益,糟糕的合作有害。
一把可供坐下的椅子和困倦的早柚。
作为生产可供坐下的椅子的公司 Mihomo 的领导者,Koji 正在鼓励员工进行合作,以扩大生产流水线的规模。为了保证合作的质量,合作关系必须满足以下三个要求:
- 每项合作关系涉及 2 名不同的员工。
- 没有两项合作关系涉及同一对员工。
- 每名员工参与的合作关系不得超过 2 项。
公司共有 $n$ 名员工,包括 Koji 本人。Koji 认为实现公平的合作非常重要。骰子从不说谎,因此他决定掷骰子来决定公平的分配。掷骰子的过程如下:
- 初始时,合作关系集合 $R$ 为空集 ($\emptyset$),然后进入循环。
- 在每次迭代中,从 $1, 2, \dots, n$ 中独立且均匀随机地选择两个整数 $u, v$。如果 $R \cup \{(u, v)\}$ 满足上述要求,则将 $(u, v)$ 加入 $R$,否则保持 $R$ 不变。
- 在每次迭代开始前,如果 $R$ 中无法再添加任何合作关系,程序立即终止。
Koji 用了 114 秒写出了上述过程的程序,但他发现程序运行直到结束花费了 514 秒。由于 Koji 不擅长计算大于 9 的数字,他希望你帮他计算上述过程的期望迭代次数,以判断程序中是否存在潜在的 Bug。
输入格式
输入包含一个整数 $n(1 \le n \le 200)$,表示 Mihomo 公司的员工人数。
输出格式
输出一个十进制实数,表示你的答案。
如果你的答案与参考答案的绝对误差或相对误差小于 $10^{-6}$,则视为正确。
若要输出小数点后固定位数的数字(例如 9 位),你可以使用:
- C 语言风格输出:
printf("%.9lf\n", ans)或printf("%.9Lf\n", ans); - C++:
cout << fixed << setprecision(9) << ans << endl;; - Python:
print("%.9f" % ans); - 其他语言请参考相应文档。
样例
样例输入 1
1
样例输出 1
0.000000000
样例输入 2
2
样例输出 2
2.000000000
样例输入 3
3
样例输出 3
8.250000000
说明
对于第一个样例,Koji 无法与任何人合作,因此程序立即终止。
对于第二个样例,最终的 $R$ 将是 $\{(1, 2)\}$ 或 $\{(2, 1)\}$,并且有 $1/2$ 的概率得到无效的合作关系 $(1, 1), (2, 2)$。因此,期望迭代次数为: $$1 \times (1/2) + 2 \times (1/4) + 3 \times (1/8) + \dots = 2$$