Если начать с числа 1 и двигаться дальше вправо по часовой стрелке, образуется следующая спираль 5х5:
21 22 23 24 25
20 7 8 9 10
19 6 1 2 11
18 5 4 3 12
17 16 15 14 13
Можно убедиться, что сумма чисел в диагоналях равна 101.
Какова сумма чисел в диагоналях спирали 1001 на 1001, образованной таким же способом?
# Мы имеем n * n квадрат, где n - нечетное. # Правый верхний угол равен n * n # Если идти против часовой стрелки, то верхний левый угол равен n^2 - (n - 1). # Нижний левый угол равен n^2 - 2(n - 1) и нижний правый равен n^2 - 3(n-1) # Собрав все это, сумму на внешнем кольце можно выразить формулой 4n^2 - 6(n - 1). # # Между прочим , общая формула для такой задачи(4m^3 + 3m^2 + 8m - 9) / 6, где m - это размер спирали. В нашем случае это 1001 def compute(): SIZE = 1001 # Must be odd ans = 1 # Special case for size 1 ans += sum(4 * i * i - 6 * (i - 1) for i in range(3, SIZE + 1, 2)) return str(ans) if __name__ == "__main__": print(compute())
Если вы ищете работу на Python, на Talanto.work сейчас есть варианты для junior, middle, senior…
Рынок Python-вакансий большой, но удобным его назвать сложно. Формально вакансий много, однако в реальном поиске…
Срезы в Python — это больше, чем a[2:7]. В статье — быстрый разбор полезных приёмов:…
В этой статье мы рассмотрим возведение в степень в Python с помощью различных методов, от…
Дубликаты в списке Python — частая проблема. В статье показано, как быстро убрать повторы, в…
Услуга виртуального хостинга на SpaceWeb позволяет арендовать часть сервера (shared-сервера) и разместить на нём свой…