#LC2405. 数学课上的囚徒问题(2)

    ID: 1445 传统题 1000ms 256MiB 尝试: 2 已通过: 2 难度: 10 上传者: 标签>第六届山东师范大学与齐鲁工业大学大学生程序设计联赛

数学课上的囚徒问题(2)

题目描述

本题题目背景与上题相接,不再赘述。

你在认真想着老师提供的最优策略:囚徒进去房间后,先找到与自己编号一样的箱号,打开后按箱号的字条去找下一个箱号,一直到找到的箱子里的字条恰好是自己编号。

你思索了一天一夜后发现,决定囚徒能否找到你的号码的关键是循环节的长度。如果他的号码在一个长度小于 N2\frac{N}{2} 的循环上,那么他肯定会找到他的号码。但是,如果他的号码是一个长度为 N2+1\frac{N}{2}+1 或更长的循环节的一部分,那么,他搜索 N2\frac{N}{2} 个盒子,是找不到他的号码的。

当他打开贴有他号码的盒子时,实际上可以认为是他从离他号码最远的循环点开始的。他想知道指向这个盒子的纸条在哪里,他必须沿着数字循环,一直走到尽头。

这意味着,如果囚徒们遵循这个策略,并且最长的循环是 N2+X\frac{N}{2}+X (1XN21\leq X\leq \frac{N}{2}),那么不仅仅是一两个囚徒无法找到他们的号码,而是这个循环上的所有 N2+X\frac{N}{2}+X 个人都无法找到。

所以,按照此策略,所有囚徒成功的概率,是随机排列的一百个数字不包含长度超过 N2\frac{N}{2} 的循环节的概率。

你思考出了这个问题的正确解法,这应该是一个简单的数学公式,但是你想更进一步,想准确知道囚徒们成功的概率,假设现在有 NN 名囚徒参与这个游戏,如果他们按照此策略进行游戏,请问他们成功的概率是多少?

输入格式

一个整数 NN (2N5107)(2 \leq N \leq 5 \cdot 10^7), 表示有 NN 名囚徒,保证 NN 为偶数。

输出格式

一行一个小数,表示囚徒们成功的概率。

如果你的答案的绝对误差不超过 10910^{-9} ,则被视为正确,即如果你的答案为 aa ,标准答案为 bb ,当 ab109|a-b|\leq10^{-9} 时,你的答案将被视为正确。

样例

2
0.50000000000000000000
4
0.41666666666666674068
100
0.31182782068980474666