Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с пайтоном 3, я на олимпиаде

София Кожевникова Ученик (113), закрыт 1 день назад
Наши слоны
Ограничение по времени: 1 секунда
Ограничение по памяти: 25б мегабайт
На столе лежит шахматная доска, в которой те строк и т. столбцов. Слон может ходить по диагонали на любое количество клеток. Пустая клетка находится «под боем», если какой-либо из слонов на доске может одним ходом перейти на эту клетку. На доске в четырёх углах стоят четыре слона. Сколько клеток находится «под боем»?
Формат входных данных
В первой строке содержится количество строк шахматной доски п, во второй - столбцов тп.
(2≤mm≤108).
Формат выходных данных
В единственной строке выведите целое число количество клеток, находящихся «под боем».
Система оценки
Решения, правильно работающие при п, т ≤ 500, будут оцениваться в 52 балла.
Лучший ответ
Андрей Высший разум (462142) 1 месяц назад
Самый тупой способ, работающий при ≤ 500. В цикле создаём множество всех посещаемых клеток - это если совсем думать лень:
 n, m, t = int(input()), int(input()), set()
for i in range(min(n, m)): t |= {(i, i), (n - i - 1, i), (i, m - i - 1), (n - i - 1, m - i - 1)}
print(len(t) - 4)
Только вот задача решается примитивной арифметикой без циклов:
 n, m = sorted([int(input()), int(input())])
if n == m:
print(n * 2 - 4 - n % 2)
else:
print(n * 4 - 4 - n % 2 * 2 - m % 2 * 2 * (m < n * 2))
MextonЗнаток (284) 1 месяц назад
Возможно вы сможете помочь с другой задачей их этой олимпиады. Буду вам благодарен.
Андрей Высший разум (462142) Mexton, Уже было: https://otvet.mail.ru/question/240339423
Ilya FardzinovУченик (106) 1 месяц назад
А какой алгоритм там нужен? Python 3?
Ilya Fardzinov, абсолютно верно
Кирилл СтукошинЗнаток (281) 1 месяц назад
Кто сделал эту задачу?
Андрей ЧистяковУченик (101) 1 месяц назад
помогите пожалуйста
Артём ХудолейУченик (103) 1 месяц назад
а не могли бы вы объяснить это решение
Андрей Высший разум (462142) Если поле квадратное, у нас всего 2 диагонали длиной n и суммарным кол-вом клеток 2 * n. Из них 4 клетки заняты самими слонами и не бьются. Если длина стронны чётная, диагонали не пересекаются. Но если длина стороны нечётная, центральная клетка принадлежит обеим диагоналям и общее кол-во клеток под боем на 1 меньше. Если поле прямоугольное, у нас 4 диагонали с длинной, равной минимальной стороне n и суммарным кол-вом клеток 4 * n. Из них 4 клетки заняты самими слонами и не бьются. Если n нечётно, диагонали, выходящие из концов короткой стороны попарно пересекаются и это сокращает кол-во клеток на 2. Если m (длинная сторона) превосходит n менее, чем в 2 раза, и m нечётно, выходящие и концов длинной стороны диагонали попарно пересекаются и это сокращает кол-во клеток под боем ещё на 2.
_LegenDa_Ученик (236) 1 месяц назад
неработает
Андрей Высший разум (462142) _LegenDa_, Не работает потому, что это ДВЕ РАЗНЫЕ программы, решающие задачу ДВУМЯ РАЗНЫМИ способами.
_LegenDa_Ученик (236) 1 месяц назад
да блин(
Михаил ТельныхУченик (201) 1 месяц назад
По моему арифметикой будет даже легче...
_LegenDa_Ученик (236) 1 месяц назад
даже другим способом 52 балла
Дима СкибаПрофи (611) 1 месяц назад
благодарю)
Остальные ответы
Похожие вопросы