СРОЧНО! ДАЮ 40 БАЛЛОВ! Шахматная доска состоит из n×m клеток, покрашенных в чёрный и...

0 голосов
488 просмотров

СРОЧНО! ДАЮ 40 БАЛЛОВ! Шахматная доска состоит из n×m клеток, покрашенных в чёрный и белый цвет в шахматном порядке. При этом клетка в левом нижнем углу доски покрашена в чёрный цвет. Определите, сколько всего на доске чёрных клеток.Программа получает на вход натуральные числа n и m. Программа должна вывести ответ на задачу.ПримерыВвод 134Вывод6Язык Python


Информатика (1.1k баллов) | 488 просмотров
Дан 1 ответ
0 голосов

Объяснение:

Рассмотрим случай, когда число клеток по вертикали n четное. В этом случае каждая пара горизонталей доски содержит ровно m клеток (m - число клеток доски по горизонтали). Тогда общее число черных клеток равно m*n/2.

При нечетном n к рассмотренным горизонтальным строкам добавляется еще одна - нечетная, конфигурация которой совпадает с первой (нечетной) горизонталью.

Если клетка в левом нижнем углу первой горизонтали черная, то количество черных клеток в ней можно определить как сумму результата целочисленного деления количества клеток по горизонтали на два и остатка от этого деления. В результате приходим к следующей формуле:

\begin{lgathered}k=\begin {cases} \frac{mn}{2}, \ n \, mod \, 2=0 \\ \frac{m(n-1)}{2}+ (m \, div \, 2)+(m \, mod \, 2), \ n \, mod \, 2=1 \end {cases}\end{lgathered}

k={

2

mn

, nmod2=0

2

m(n−1)

+(mdiv2)+(mmod2), nmod2=1

Ниже представлен текст программы на языке Pascal.ABC.NET

var

m, n: integer;

begin

Write('Введите количество горизонталей на доске: ');

Readln(n);

Write('Введите количество вертикалей на доске: ');

Readln(m);

if (n mod 2) = 0 then Writeln('Черных клеток на доске- ', m * n / 2)

else Writeln('Черных клеток на доске- ', m * (n-1) / 2 + (m div 2) + (m mod 2))

end.

Тестовое решение:

Введите количество горизонталей на доске: 8

Введите количество вертикалей на доске: 7

Черных клеток на доске- 28

(90 баллов)