Problem #57
✰ - click to bookmark
★ - in your bookmarks
Tags:
arithmetic
loops
floating-point
c-0
simple
digital-signal-processing
Маленький Мерлин хочет стать метеорологом. Он измеряет температуру воздуха каждый час, так что через несколько дней получается длинная последовательность значений.
Однако инструменты его несовершенны и измерения не вполне точны - они "скачут" вверх и вниз на несколько градусов от реальных значений.
Обнаружив это, Мерлин решил "сгладить" данные. Чтобы достичь этого, каждое значение нужно заменить средним от трех -
его самого и двух соседних (предыдущего и следующего). Например, если у нас последовательность из 5 значений:
3 5 6 4 5
То второе (5) должно быть заменено на (3 + 5 + 6) / 3 = 4.66666666667,
а третье (6) заменяется на (5 + 6 + 4) / 3 = 5,
четвертое же (4) заменим на (6 + 4 + 5) / 3 = 5.
Договоримся также что первое и последнее значения мы не меняем вовсе.
На картинке выше синяя линия изображает необработанные результаты измерений, а красная - данные после сглаживания.
От нас требуется написать программу которая поможет малышу Мерлину с его хитроумным алгоритмом цифровой обработки сигнала.
Входные данные указывают длину последовательности в первой строке.
Вторая строка содержит результаты измерений (значения последовательности).
Ответ должен содержать "сглаженную" последовательность. Значения нужно сосчитать с точностью 1e-7 или лучше.
Пример:
входные данные:
7
32.6 31.2 35.2 37.4 44.9 42.1 44.1
ответ:
32.6 33 34.6 39.1666666667 41.4666666667 43.7 44.1