|
Шахматная доска - 2
(Время: 1 сек. Память: 16 Мб Сложность: 18%)
Здесь следует рассмотреть два случая: когда доска состоит из четного количества клеток и когда на ней количество клеток нечетно. В первом случае мы получим такую доску, когда один из размеров доски – четное число (m-четно или n-четно). В этом случае у нас в каждой строке (или столбце) будет находиться четное число клеток, что означает равное количество белых и черных в данной строке (или столбце). Поэтому, в случае четного числа клеток наша программа должна выводить «equal». Математически, проверка четности может соответствовать значению логического выражения (m*n) mod 2 = 0, но для установленных ограничений в задаче значение произведения может превышать 4-байтовое целое, что может привести к ошибке. Поэтому желательно использовать выражение вида m mod 2=0 or n mod 2=0, либо использовать 8-байтовый целый тип.
Нечетное количество клеток может быть только при нечетных m и n. В этом случае обязательно получится больше черных, либо белых клеток. Несложно понять, что больше получится клеток того цвета, которые расположены в углах доски. В частности, нас может интересовать клетка с координатами (1,1), ее цвет и следует вывести в качестве ответа. Для определения цвета угловой клетки будем использовать тот факт, что на шахматной доске клетки с одинаковой четностью суммы координат имеют одинаковый цвет. Нам известен цвет c и координаты клетки (j,i), которую раскрасила Аня. Поэтому мы можем утверждать, что если (j+i) – четно, то клетка (1,1) имеет тоже цвет c и клеток с таким цветом больше, в противном случае больше клеток с цветом (1-c). Более коротко это утверждение можно записать следующим образом: если (i+j) mod 2 = c, то на доске больше черных клеток, иначе больше белых клеток.
Следующая алгоритмическая запись формализует идеи, описанные выше:
read(n,m,i,j,c)
if ((m*n) mod 2 = 0) write('equal')
else
if((i+j) mod 2 = c) write('black') else write('white')
| |