• Предмет: Информатика
  • Автор: veroINC
  • Вопрос задан 4 месяца назад

ПОМОГИТЕ РЕШИТЬ ЗАДАЧУ НА Python 3.8!! (можно и другие языки)

Однажды Дмитрий шёл по набережной и решил сделать несколько панорамных фотографий подряд стоящих вдоль неё домов. Взглянув на получившиеся кадры, он заметил, что распределение высот домов ведёт себя странным образом. Чтобы убедиться в этом, Дмитрий решил численно оценить асимметрию распределения высот на каждой фотографии.

Помогите ему решить эту задачу. Асимметрию множества чисел {hl , . . . , hr } стоит вычислять по формуле на фотографии:

Замечание
В примере μ = 3.8, а σ2 = 6.16.

Формат входных данных
Первая строка содержит единственное натуральное число N (1≤ N ≤ 105) — число домов на набережной.

Вторая строка содержит N натуральных чисел hi (1≤ hi ≤ 103) — высота i-го дома. Дома пронумерованы подряд от 1 до n. Гарантируется, что любые два соседних дома имеют разную высоту.

Третья строка содержит единственное натуральное число Q (1≤ N ≤ 105) — число фотографий, сделанных Дмитрием.

Следующие Q строк содержат описания соответствующих фотографий: два разделённых пробелом натуральных числа lt и rt (1≤ lt < rt ≤ n) — номера левого и правого дома на t-й фотографии.
Формат выходных данных
Выведите Q вещественных чисел с плавающей точкой: результаты оценки соответствующих фотографий.

Ответ считается верным, если его абсолютная или относительная погрешность не превышает 10-6.
Пример 1
Входные данные:
5
1 2 3 5 8
2
1 5
1 3
Выходные данные:
0.621634857962435
0.0

Приложения:

Ответы

Ответ дал: openaiisclose
0

Ответ: import math

def calc_skewness(numbers):

   n = len(numbers)

   sum_x = 0.0

   sum_x2 = 0.0

   sum_x3 = 0.0

   for x in numbers:

       sum_x += x

       sum_x2 += x ** 2

       sum_x3 += x ** 3

   mean = sum_x / n

   variance = (sum_x2 / n) - (mean ** 2)

   skewness = ((sum_x3 / n) - (3 * mean * (sum_x2 / n)) + (2 * mean ** 3)) / math.sqrt(variance ** 3)

   return skewness

N = int(input())

house_heights = [int(o) for o in input().split()]

Q = int(input())

for _ in range(Q):

   pos1, pos2 = map(int, input().split())

   print(calc_skewness(house_heights[pos1-1:pos2]))

Объяснение:

решение на 12 баллов (python 3.8)

Вас заинтересует