Разбор
Расмотрим размер прямоугольника , изображенного на сетке. Рассмотрим, сколькими способами можно выбрать значение . Сетка содержит строк квадратов, следовательно в сетке имеется горизонтальная линия. Пронумеруем их числами от до . Выберем две линии и . Проведем между ними отрезок — это и будет вертикальная сторона прямоугольника . Количество способов выбрать два числа и из множества равно . Например, для имеется варианта выбрать вертикальную сторону прямоугольника:
Аналогично, в сетке имеется вертикальная линия. Количество способов выбрать горизонтальную сторону прямоугольника равно .
Следовательно количество различных прямоугольников на сетке равно
Пример
Для прямоугольника имеются:
единичных прямоугольников;
прямоугольника размером ;
горизонтальных прямоугольника ;
вертикальных прямоугольника ;
прямоугольника ;
прямоугольник ;
Итого получилось прямоугольников.
Реализация алгоритма
Поскольку , то количество прямоугольников может достигать . Этот результат выходит за пределы битового целого числа. Поэтому реализуем решение на языке Питон.
n, m = map(int,input().split()) a = (n + 1) * n // 2 b = (m + 1) * m // 2 res = a * b print(res)