Ну, у этой проблемы есть решение, только если мы сделали 2 предположения (в противном случае есть бесконечные комбинации)
1) самый маленький квадрат имеет фиксированный размер
2) также установлен способ вырезания большого квадрата, как если бы вы поместили квадрат в сетку, линии которой разделены размером маленького квадрата.
Есть и третье предположение, которое немного облегчит проблему
3) Большой квадрат имеет сторону в K раз большую, чем маленький квадрат. Где K - целое число.
Если оба предположения верны, мы можем продолжить:
Найдите количество N (N beign integer) наименьших квадратов: квадраты с размером N * small-size
if ((big-size % N*small-size)==0)
Number += (big-size / N*small-size)^2
else
Number += ((big-size / N*small-size)^2) * (big-size % N*small-size)
* (большой размер% N small-size) в условии else есть, потому что, если bigsquare не делится на N, при «сетке» большого квадрата с gid-width N останется «дробная часть». Таким образом, мы можем начать деление снова (повторная сетка), но со смещением 1, 2 или N маленьких шагов. Количество шагов (большой размер% N маленький размер).
Опять же, эти шаги верны, только если были приняты 3 допущения.