Нужно написать программу Шахматная доска состоит из n х m клеток, покрашенных в черный и белый цвет в«шахматном» порядке. При этом клетка в левом нижнем углу доски покрашена в черный цвет определите, сколько всего на доске черн...

Нужно написать программу Шахматная доска состоит из n х m клеток, покрашенных в черный и белый цвет в«шахматном» порядке. При этом клетка в левом нижнем углу доски покрашена в черный цвет определите, сколько всего на доске черных клето. Программа получает на вход два числа n и m, залисанных в отдельных строю Bсе натуральные, не превосходящие 30 000 числа Программа должна вывести одно целое число количество черных клеток на доске.
Гость
Ответ(ы) на вопрос:
Гость
Рассмотрим случай, когда число клеток по вертикали n четное. В этом случае каждая пара горизонталей доски содержит ровно m клеток (m - число клеток доски по горизонтали). Тогда общее число черных клеток равно m*n/2. При нечетном n к рассмотренным горизонтальным строкам добавляется еще одна - нечетная, конфигурация которой совпадает с первой (нечетной) горизонталью. Если клетка в левом нижнем углу первой горизонтали черная, то количество черных клеток в ней можно определить как сумму результата целочисленного деления количества клеток по горизонтали на два и остатка от этого деления. В результате приходим к следующей формуле: [latex]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}[/latex] Ниже представлен текст программы на языке 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
Не нашли ответ?
Ответить на вопрос
Похожие вопросы