从 B2147 求 f(x,n) 出发
求 f(x,n)
题目描述
已知
计算 \(f\) 的值。
输入格式
输入 \(x\) 和 \(n\)。
输出格式
函数值,保留两位小数。
样例 #1
样例输入 #1
4.2 10
样例输出 #1
3.68
很多人会用递归或递推的方法通过此题。
但实际上我们可以通过数学分析来找到一个 \(O(1)\) 的解决方案。观察函数 \(f(x, n)\) ,我们可以看到它是一个嵌套的平方根表达式,但是随着 \(n\) 的增加,每一层的平方根实际上对最终结果的影响越来越小。这是因为每一层的平方根都是以 \(n\) 为基数递减的。
我们可以通过数学归纳法来分析这个问题。首先,我们考虑最简单的情况,即 \(n=1\) :
$ f(x, 1) = \sqrt{1 + x} $
接下来,考虑 \(n=2\) 的情况:
$ f(x, 2) = \sqrt{2 + \sqrt{1 + x}} $
我们可以观察到,随着 \(n\) 的增加,每一层的平方根内的值都在增加,但是增加的幅度在减小。这是因为每一层的平方根都是基于前一层的结果,而前一层的结果本身已经包含了一个平方根。因此,我们可以推断,当 \(n\) 变得足够大时,函数 \(f(x, n)\) 将趋近于某个特定的值。
实际上,这个特定的值就是当 \(n\) 趋于无穷大时的极限值。我们可以通过数学方法来计算这个极限值。设 \(f(x, \infty) = L\) ,则我们有:
\(L = \sqrt{1 + L}\)
解这个方程,我们得到:
这是一个二次方程,解这个方程我们得到两个解:
$ L = \frac{1 \pm \sqrt{5}}{2} $
由于平方根函数的值域是正数,我们选择正的解:
$ L = \frac{1 + \sqrt{5}}{2} $
这个值是黄金分割比,大约等于 \(1.618\) 。因此,对于任意的 \(x\) 和足够大的 \(n\) , \(f(x, n)\) 将趋近于 \(1.618\) 。这就是一个 \(O(1)\) 的解决方案,因为它不依赖于 \(n\) 的大小。
然而,这个解决方案只适用于 \(n\) 足够大的情况。对于具体的 \(n\) 值,我们可能需要使用迭代方法来获得更精确的结果,但这将不再是 \(O(1)\) 的解决方案。对于样例输入,我们可以使用迭代方法来计算更精确的结果。

浙公网安备 33010602011771号