10970. Большая шоколадка
Необходимо
разломать шоколадку размером m ´ n на единичные плитки, сделав при
этом минимальное число разломов.
Вход.
Каждая строка содержит два числа m и n (1 £ m,
n £ 300) – размеры шоколадки.
Выход. Для каждого теста вывести минимальное
число разломов, которое требуется для разлома шоколадки на единичные плитки.
2 2
1 1
1 5
Пример выхода
3
0
4
математика, инвариант
В процессе разломов шоколадки
инвариантным является соотношение:
число кусков = число разломов +
1,
так как при разломе любого куска
число разломов и число кусков увеличивается на 1.
Изначально число кусков равно 1
(одна полная шоколадка), число разломов равно нулю. В процессе разломов их
число увеличивается на столько же, на сколько увеличивается число кусков.
Поэтому для получения m * n единичных кусков необходимо
совершить m * n – 1
разломов не зависимо от порядка их совершения.
|
число кусков |
число разломов |
начало |
1 |
0 |
конец |
m * n |
m * n – 1 |
Для каждой шоколадки размером m на n
выводим ответ m * n – 1.
while(scanf("%d
%d",&m, &n) == 2)
printf("%d\n",m * n - 1);