Как вычислить количество прямоугольников в прямоугольной сетке?

#math #formula

#математика #формула

Вопрос:

Я хочу вычислить количество прямоугольников в rectangles.Это можно сделать с помощью формулы

(x ^2 x)(y ^ 2 y)/4

но это также включает в себя идеальные квадраты, такие как 1*1,2*2,3*3 и т.д.Я не хочу включать это в свои вычисления.Как я могу это сделать?

Ответ №1:

Хорошо, у вас есть количество прямоугольников с целочисленными координатами между точками (0, 0) , (x, 0) , (x, y) и (0, y) , x и y которые также являются целыми числами. Теперь вам нужно удалить идеальные квадраты из этой суммы.

Чтобы вычислить это, давайте оценим количество квадратов 1*1 : их, очевидно, x*y несколько. Для квадратов 2*2 у нас есть x-1 варианты выбора координаты x и y-1 координаты y нижнего левого угла такого квадрата из-за ширины этого квадрата: в результате получаются (x-1)*(y-1) квадраты. То же самое, у нас будут (x-2)*(y-2) квадраты 3*3 и т.д.

Итак, для заданного i у нас есть (x - i 1) * (y - i 1) квадраты i*i , и i идет от 1 к минимуму x и y (конечно, если x равно 4 и y равно 7, у нас не может быть квадрата со стороной больше 4).

Итак, если m = min(x, y) , мы имеем:

 Sum_Squares = Sum(i = 1, i = m, (x - i   1) * (y - i   1))
            = Sum(j = 0, j = m - 1, (x - i) * (y - i))
            = Sum(j = 0, j = m - 1, x*y - (x y)*j   j^2)
            = m*x*y - (x y)*Sum(j = 0, j = m - 1, j)   Sum(j = 0, j = m - 1, j^2)
            = m*x*y - (x y)*Sum(j = 1, j = m - 1, j)   Sum(j = 1, j = m - 1, j^2)
            = m*x*y - (x y)*m*(m-1)/2   (m-1)*m*(2*m-1)/6
  

Я получаю это с изменением индекса ( j = i - 1 ) и с помощью хорошо известных формул:

 Sum(i = 1, i = n, j) = n*(n   1)/2
Sum(i = 1, i = n, j^2) = n*(n   1)*(2*n   1)/6
  

Вам просто нужно удалить это Sum_Squares из (x^2 x)(y^2 y)/4 , и все готово !