Problem #18
✰ - click to bookmark
★ - in your bookmarks
Tags:
mathematics
arithmetic
loops
classical
c-1
c-0
simple
Многие математические задачи в программировании решаются не точно, а приближённо, за несколько повторяющихся операций каждая из которых получает все лучшее приближение.
Давайте рассмотрим этот приём на примере вычисления квадратного корня по следующему способу:
r из заданного значения X.r = 1 (конечно, это весьма грубо).r = X / r.d = X / r (оно не будет равно r поскольку r не является точным значением корня).r и d в качестве нового приближения.Т.е. полностью формула одного вычислительного шага выглядит так (здесь := означает присваивание):
r + X / r
r := -------------
2
Вы можете обратиться к статье Square Root Approximation за большими подробностями о вычислении квадратного корня по Методу Герона.
Итак, нам будут даны значение X для которого нужно посчитать приближение квадратного корня и N - количество шагов.
Используем r = 1 как первое приближение и выведем результат после N шагов.
Входные данные содержат количество тест-кейсов в первой строке.
Следующие строки содержат сами тест-кейсы - в каждой будет значение X, корень из которого мы ищем и N - количество шагов.
Ответ должен содержать вычисленные приближения через пробел (с точностью не хуже 1e-7).
Пример:
входные данные:
3
150 0
5 1
10 3
ответ:
1 3 3.196