import numpy as np from math import pi, ceil # коэффициенты μ = 0.592 ρ = 1.2466 π8 = pi / 8 dsq = 20 ** 2 # Формула мощности def p(u): ucb = u ** 3 return μ * ρ * π8 * dsq * ucb # Скользящяя сумма, тоесть сумма от 1го до n-го элемента, от 2го до n+1го итд def rolling_sum(a, n): ret = np.cumsum(a, dtype=float) ret[n:] = ret[n:] - ret[:-n] return ret[n - 1:] # Считываем данные, и транспонируем что-бы было на 2 строки и 239 столбцов, а 239 строк и 2 столбца (Удобнее потом работать) data = np.array(eval(input())).T # Считаем сколько в каждый час генерирует одна турбина, для этого в функцию генерации отправляем весь второй столбец (1 - ибо индекс с нуля) gen_per_turbine = p(data[:, 1]) # Считаем сколько турбин надо что-бы удовлетворить первое условие, для этого вычитаем 500 кВт которые мы можем оставить и делим на то сколько генерит одна турбина # Из этого всего выбираем максимум, и округляем вверх turbines_needed = ceil(((data[:, 0] - 5e5) / gen_per_turbine).max()) # Считаем скользящую сумму дефецита энергии по 24 часа что-бы проверить на второе условие # Пока хоть-одна из них (А точнее максимальная) превыщает 1МВт, прибавляем одну турбину while rolling_sum(np.clip(data[:, 0] - (gen_per_turbine * turbines_needed), 0, None), 24).max() > 1e6: turbines_needed += 1 # Выводим сколько турбин нам надо print(turbines_needed) Шутка на тему: https://xkcd.com/1378/