Задача 255
Округленные квадратные корни

Определим округленный квадратный корень натурального числа n как квадратный корень n, округленный в сторону ближайшего целого числа.

Следующая процедура (по-существу, это - применение метода Герона для целочисленной арифметики) находит округленный квадратный корень числа n:

Пусть d - количество цифр числа n.
Если d нечетное число, x0 = 2×10(d-1)⁄2.
Если d четное число, x0 = 7×10 (d-2)⁄2.
Повторять цикл:

$$x_{k+1} = \Biggl\lfloor{\dfrac{x_k + \lceil{n / x_k}\rceil}{2}}\Biggr\rfloor$$

до тех пор, пока не будет достигнуто xk +1 = xk.

В качестве примера, рассмотрим округленный квадратный корень n = 4321.
n состоит из 4 цифр, так что $x_0 = 7 \times 10^{(4-2)/2} = 70$.
$$x_1 = \Biggl\lfloor{\dfrac{70 + \lceil{4321 / 70}\rceil}{2}}\Biggr\rfloor = 66\\ x_2 = \Biggl\lfloor{\dfrac{66 + \lceil{4321 / 66}\rceil}{2}}\Biggr\rfloor = 66$$ Поскольку x2 = x1, то здесь мы и останавливаемся.
Таким образом, по завершении всего двух итераций нам удалось найти округленный квадратный корень числа 4321, равный 66 (точное значение корня составляет 65.7343137…).

Число необходимых итераций для данного метода на удивление невелико.
К примеру, мы можем найти округленное значение квадратного корня для числа из 5 цифр (10 000 ≤ n ≤ 99 999), выполнив в среднем 3.2102888889 итераций (среднее значение округлено до 10 знака после десятичной точки).

Используя описанную выше процедуру, определите, чему равно среднее число итераций при нахождении округленного значения квадратного корня для 14-значного числа (1013n < 1014)?
Ответ округлите с точностью до 10 знака после десятичной точки.

Примечание: Символами ⌊x⌋ и ⌈x⌉ обозначают функции округления вниз и округления вверх, соответственно.

Оригинал
 
© Проект Эйлера | Translated problems from ProjectEuler.net