Проект Эйлера

Проект Эйлера. Задача 28 «Диагонали числовой спирали»

Условие:

Если начать с числа 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())

Ruslan

Recent Posts

Библиотека Pydantic: валидация данных на Python

Pydantic - это мощная библиотека проверки данных и управления настройками для Python, созданная для повышения…

3 дня ago

7 наилучших библиотек визуализации Python на 2024 год

Python предлагает набор библиотек, удовлетворяющих различные потребности в визуализации, будь то академические исследования, бизнес-аналитика или…

6 дней ago

Как преобразовать строку в байты в Python

В Python для представления данных в двоичной форме можно использовать байты. Из этой статьи вы…

2 недели ago

Что такое Werkzeug?

В этой статье рассказывается о том, что такое Werkzeug и как Flask использует его для…

3 недели ago

Как прибавить дни, месяцы и годы к дате в Python

При работе с датами часто возникает необходимость прибавлять к дате или вычитать из нее различные…

4 недели ago

Социальная аутентификация в приложении на Flask

В этом руководстве мы рассмотрим, как добавить социальную аутентификацию с помощью GitHub и Google в…

1 месяц ago