Предмет: Информатика, автор: likeetiktokplankton

Спираль

Ограничение по времени: 1 секунда
В левом верхнем углу прямоугольного поля размера N×M сидит Черепашка. Она хочет закрасить некоторые клетки по спирали, закручивающейся к центру, как на рисунке:

Формат выходных данных
Программа должна вывести одно целое число — количество клеток, закрашенных Черепашкой.
Обратите внимание, что ответ в этой задаче может превышать возможное значение 32‑битной целочисленной переменной, поэтому необходимо использовать 64‑битные целочисленные типы данных (тип int64 в языке Pascal, тип long long в C++, тип long в Java и C#).

Приложения:

Ответы

Автор ответа: magisterobivan
2

Ответ:

n, m = [int(input()) for h in range(2)]

ans = 0

while n >= 4 and m >= 4:

   k = (n + m - (lambda a, b: ((a // b) * a + (b // a) * b) // (a // b + b // a))(n, m)) // 4

   ans += ((n + m) + (n + m) - 4 * (k - 1)) * k // 2

   n, m = n - 2 * k, m - 2 * k

if n == 3 and m >= 3:

   ans += 2 * m + 1

elif n == 2 and m >= 2:

   ans += m + 1 + int(m >= 3)

elif m == 3 and n >= 3:

   ans += 2 * n + 1

elif m == 2 and n >= 2:

   ans += n + 1

else:

   ans += n * m

print(ans)

Объяснение:

Похожие вопросы
Предмет: Алгебра, автор: Alexandra13Gulneva