Задан латинский квадрат в виде матрицы
![$M[ n,n] $M[ n,n]](https://dxdy-03.korotkov.co.uk/f/e/2/5/e25c56e9f6fc81e5db0484cccb2e238482.png)
![$ M[i,j]=\frac{((2i+1)(2j+1) \mod 2^{k+1})-1}{2}$ $ M[i,j]=\frac{((2i+1)(2j+1) \mod 2^{k+1})-1}{2}$](https://dxdy-03.korotkov.co.uk/f/a/5/f/a5fda61633686acd09567073f364b10882.png)
![$0\leqslant i \leqslant n -1$ $0\leqslant i \leqslant n -1$](https://dxdy-01.korotkov.co.uk/f/8/e/d/8edb0519adc92e14cdb029b2e557242382.png)
![$0\leqslant j\leqslant n -1$ $0\leqslant j\leqslant n -1$](https://dxdy-03.korotkov.co.uk/f/6/c/2/6c205e9ca8f19d0b06655f0aadebfe5c82.png)
![$n =2^{k}$ $n =2^{k}$](https://dxdy-01.korotkov.co.uk/f/4/5/1/451171d8ca20f6aad87550fd814f56d982.png)
![$k \in \mathbb{N}$ $k \in \mathbb{N}$](https://dxdy-01.korotkov.co.uk/f/0/9/1/091a3af356c1abf7e80434e9d0049f5282.png)
При необходимости можно показать пример.
Нужно получить сумму элементов частичного прямоугольника из упомянутого латинского квадрата произвольного размера, включающего в себя элемент
![$M[0,0]$ $M[0,0]$](https://dxdy-03.korotkov.co.uk/f/e/c/8/ec8005ca9092abb29e6ae3b938f1053682.png)
.
Один из способов
1. Предполагаем, что произвольный элемент латинского квадрата
![$M[X,Y]$ $M[X,Y]$](https://dxdy-02.korotkov.co.uk/f/1/5/0/1508e8785941eb8e29489c6634305baf82.png)
представлен в двоичном виде.
2. Представляем формулу каждого разряда
![$M[X,Y]$ $M[X,Y]$](https://dxdy-02.korotkov.co.uk/f/1/5/0/1508e8785941eb8e29489c6634305baf82.png)
в виде арифметического полинома.
3. Произвольный разряд
![$X_i$ $X_i$](https://dxdy-02.korotkov.co.uk/f/1/3/3/1338d1e5163ba5bc872f1411dd30b36a82.png)
числа
![$X$ $X$](https://dxdy-01.korotkov.co.uk/f/c/b/f/cbfb1b2a33b28eab8a3e59464768e81082.png)
(для
![$Y$ $Y$](https://dxdy-02.korotkov.co.uk/f/9/1/a/91aac9730317276af725abd8cef04ca982.png)
то же самое) заменяем таким образом,
что
![$ X_i=\frac{x_i+1}{2}$ $ X_i=\frac{x_i+1}{2}$](https://dxdy-03.korotkov.co.uk/f/2/4/b/24bc0382c591ab95f9323b711388573d82.png)
. Чтобы аргумент
![$X_i$ $X_i$](https://dxdy-02.korotkov.co.uk/f/1/3/3/1338d1e5163ba5bc872f1411dd30b36a82.png)
принимал значения
![$0,1$ $0,1$](https://dxdy-01.korotkov.co.uk/f/0/e/3/0e33dbd6336951da67be1fd22e85a5f382.png)
, аргумент
![$x_i$ $x_i$](https://dxdy-02.korotkov.co.uk/f/9/f/c/9fc20fb1d3825674c6a279cb0d5ca63682.png)
должен принимать значения
![$-1,1$ $-1,1$](https://dxdy-03.korotkov.co.uk/f/a/e/2/ae2cf740a937ecefb272aa3e37924f5e82.png)
.
4.Полученные полиномы нужно представить в каноническом виде - учесть,
что
![$x_i^2=1$ $x_i^2=1$](https://dxdy-04.korotkov.co.uk/f/f/9/2/f92faf6f120228edaeebb3cb3f5654ed82.png)
, и раскрыть все скобки.
Теперь множество принимаемых произвольным аргументом
![$x_i$ $x_i$](https://dxdy-02.korotkov.co.uk/f/9/f/c/9fc20fb1d3825674c6a279cb0d5ca63682.png)
и
![$y_i$ $y_i$](https://dxdy-03.korotkov.co.uk/f/2/b/4/2b442e3e088d1b744730822d18e7aa2182.png)
можно расширить до
![$[-1,0,1]$ $[-1,0,1]$](https://dxdy-04.korotkov.co.uk/f/3/5/7/357e78261b2d078cab13dcfa85f6075882.png)
.
Вот пример функции
![$P[x,y]$ $P[x,y]$](https://dxdy-02.korotkov.co.uk/f/9/f/d/9fd98c3ece6ca35a01de7486c967dd1982.png)
(некоего палиндрома) получаемой в итоге для
сообщение #658250Как ее использовать для получения суммы элементов частичного прямоугольника из упомянутого латинского квадрата при необходимости напишу, это по сути не сложный алгоритм.
Проблема в том, насколько отличаются минимальные размеры формулы для
![$P[x,y]$ $P[x,y]$](https://dxdy-02.korotkov.co.uk/f/9/f/d/9fd98c3ece6ca35a01de7486c967dd1982.png)
(и как их вообще искать) от минимальных размеров формулы для
![$M[X,Y]$ $M[X,Y]$](https://dxdy-02.korotkov.co.uk/f/1/5/0/1508e8785941eb8e29489c6634305baf82.png)