Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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/
Advertisement
Add Comment
Please, Sign In to add comment