Задача Detour.

Умова


Задача Detour. Поле в «клітинку» розмірами n*m потрібно обійти по спіралі (так як це показано на малюнку), відвідуючи кожну клітинку. Починати обхід слід з верхньої лівої клітинки. Скільки поворотів (зрозуміло направо на 90 градусів) слід виконати?

Технічні умови. Програма Detour читає з пристрою стандартного введення два числа через пропуск n, m (1≤n, m ≤500000). Програма виводить одне ціле число – кількість поворотів.


Приклади

ВведенняВиведення
3 5 4

Розв'язування

Математична модель

Нижче давайте розглянемо кількість поворотів, коли мінімімум серед довжини і висоти стовпчика буде рівна 1,2,3,4 і спробуємо знайти закономірність

Тобто, якщо n або m=1, то кількість поворотів буде рівна 0 або 1

Тобто, якщо n або m=2, то кількість поворотів буде рівна 2 або 3

Тобто, якщо n або m=3, то кількість поворотів буде рівна 4 або 5

Якщо це все узагальнити, то можна побачити закономірність.

Якщо min(n,m)=1, то кількість поворотів 0 або 1(-1,+0)

Якщо min(n,m)=2, то кількість поворотів 2 або 3(+0,+1)

Якщо min(n,m)=3, то кількість поворотів 4 або 5(+1,+2)

Якщо min(n,m)=4, то кількість поворотів 6 або 7(+2,+3)

Якщо min(n,m)=5, то кількість поворотів 8 або 9(+3,+4)

В дужках я записав закономірність між мінімумом вхідних даних і кількістю поворотів

Закономірність важко побачити, але для того щоб отримати числа у дужках, які будуть додаватися до мінімумів вхідних даних, необхідно від цього мінімуму вхідних даних відняти або 2, або 1.

Наприклад, якщо вхідні дані 3 5, то мінімум по змінній n=3. Тоді, число в дужках рівне n-2=3-2=1. Тепер, це число необхідно додати до n, щоб отримати кількість поворотів. n+1=3+1=4. Якщо узагальнити, то кінцева формула для мінімуму n буде наступна n+n-2=2*n-2.

Не важко зрозуміти, якщо мінімальним буде m, то формула буде m+m-1=2*m-1

Реалізація

Немає коментарів:

Дописати коментар

Авторські розв'язки олімпіади NetOi2020(I етап)

NetOi2020(Iетап) Задача Mult2020 Задача Railroad Задача Detour