# Algoritmo de Prefixo para Soma e Multiplicações Alternadas. ## Introdução e Alguns Resultados. Dado uma sequencia ordenada $A_n$, nós definimos uma função alternada $op(A)$ que segue: $$ op([a_0,a_1,a_2,a_3,a_4,a_5...])= (((((a_0+a_1)\cdot a_2)+a_3)\cdot a_4)+a_5)\cdot ... $$ Dado $|A|=k$ podemos escrever a equação utilizando a propriedade distributiva de forma que: $$ op([a_0,a_1,a_2,a_3,a_4,a_5...])= 1(a_0 \cdot a_2 \cdot a_4 \cdot a_6 \dots) + a_1 (a_2 \cdot a_4 \cdot a_6 \dots) + a_3 (a_4 \cdot a_6 \dots) + a_ 5 (a_6 \dots) ... $$ Utilizando notação de produtório: $$ op([a_0,a_1,a_2,a_3,a_4,a_5...])= 1 \prod_{i=0}^{\lfloor k/2 \rfloor} a_{2i} + a_1 \prod_{i=1}^{\lfloor k/2 \rfloor } a_{2i} + a_3 \prod_{i=2}^{\lfloor k/2 \rfloor} a_{2i} + a_ 5 \prod_{i=3}^{\lfloor k/2 \rfloor} a_{2i} ... $$ E de forma compacta: $$ op([a_0,a_1,a_2,a_3,a_4,a_5...])=\prod_{j=0}^{\lfloor k/2 \rfloor } a_{2j} + \sum_{i=1}^{\lfloor (k+1)/2 \rfloor} ( a_{2i-1} \prod_{j=i}^{\lfloor k/2 \rfloor} a_{2j} ) $$ Suponhamos que exista um $S$ tal que $A \subset S$ e $s_{-1} = 1$ e $s_n=a_n$, logo podemos expressar a formula da seguinte maneira: $$ op(A)=\sum_{i=0}^{\lfloor (k+1)/2 \rfloor} ( s_{2i-1} \prod_{j=i}^{\lfloor k/2 \rfloor} s_{2j} ) $$ Aonde $s \in S$. para uma sub-sequencia ordenada $A_{[\alpha, \beta]}$ em um intervalo de indices, aonde $A_{[\alpha, \beta]} \subset A$, $A_{[\alpha, \beta]}= [a_\alpha,a_{\alpha+1},a_{\alpha+2},a_{\alpha+3},a_{\alpha+4},a_{\alpha+4}... a_{\beta}]$ e $|B|= s = k - \beta < k $, temos para $op(A_{[\alpha, \beta]})$: $$ op(A_{[\alpha, \beta]})= \prod_{j=0}^{\lfloor s/2 \rfloor } a_{2j +\alpha} + \sum_{i=1}^{\lfloor (s+1)/2 \rfloor} ( a_{2i-1 +\alpha} \prod_{j=i}^{\lfloor s/2 \rfloor} a_{2j +\alpha} ) $$ ou também podemos escrever, para $\alpha$ par: $$ op(A_{[\alpha, \beta]})= a_{\alpha} \prod_{i=\lfloor \alpha/2 \rfloor}^{\lfloor\beta/2\rfloor} a_{2i} + a_{\alpha+1} \prod_{i=\lfloor \alpha/2 \rfloor +1}^{\lfloor\beta/2\rfloor} a_{2i} + a_{\alpha+3} \prod_{i=\lfloor \alpha/2 \rfloor+2}^{\lfloor\beta/2\rfloor } a_{2i} + \dots + a_\beta \prod_{i=\lfloor \beta/2 \rfloor}^{\lfloor\beta/2\rfloor} a_{2i} $$ Aonde é escrito de forma extensa e é feita uma mudança de indices, e também pois: $$ op([a_{\alpha},a_{\alpha+1},a_{\alpha+2},...,a_{\beta}])= a_{\alpha}(a_{\alpha+2} \cdot a_{\alpha+4} \cdot a_{\alpha+6} \cdot \dots \cdot a_\beta) + a_{\alpha+1} (a_{\alpha+4} \cdot a_{\alpha+6} \cdot \dots \cdot a_\beta) + a_{\alpha+3} (a_{\alpha+6} \cdot \dots a_\beta) + a_{\alpha+5} (\dots a_\beta) ... $$ e para $\alpha$ impar: $$ op(A_{[\alpha, \beta]})= a_{\alpha} \prod_{i=\lfloor \alpha/2 \rfloor}^{\lfloor\beta/2\rfloor} a_{2i-1} + a_{\alpha+2} \prod_{i=\lfloor \alpha/2 \rfloor +1}^{\lfloor\beta/2\rfloor} a_{2i-1} + a_{\alpha+4} \prod_{i=\lfloor \alpha/2 \rfloor+2}^{\lfloor\beta/2\rfloor } a_{2i-1} + \dots + a_\beta \prod_{i=\lfloor \beta/2 \rfloor}^{\lfloor\beta/2\rfloor} a_{2i-1} $$ pois, respectivamente: $$ op([a_{\alpha},a_{\alpha+1},a_{\alpha+2},...,a_{\beta}])= a_{\alpha}(a_{\alpha+1} \cdot a_{\alpha+3} \cdot a_{\alpha+5} \cdot \dots \cdot a_\beta) + a_{\alpha+2} (a_{\alpha+3} \cdot a_{\alpha+5} \cdot \dots \cdot a_\beta) + a_{\alpha+4} (a_{\alpha+5} \cdot \dots a_\beta) + a_{\alpha+6} (\dots a_\beta) ... $$ Repare que para a subsequencia dependendendo do valor de $\alpha$ as paridades mudam de forma que para $\alpha$ impar temos $2j+\alpha$ impar e $2i-1+\alpha$ par, e se $\alpha$ é par temos $2j+\alpha$ par e $2i-1+\alpha$ impar. Vamos definir a sub-sequencias $A_{[0,k-1]}$ que não ultimo indice de forma que: $A_{[0,k-1]} = [a_0,a_1,a_2,.., a_{k-1}]$ temos que: $$ op(A_{[0,k-1]})= \begin{cases} op(A) - a_k \text{ e } k \text{ é impar } \\ \frac{op(A)}{a_k} \text{ e } k \text{ é par } \\ \end{cases} $$ --- ### Prova 1 Temos duas possibilidades, para k impar: $$ op([a_0,a_1,a_2,a_3,a_4,a_5... a_{k-1]})= (((((a_0+a_1)\cdot a_2)+a_3)\cdot a_4)+a_5)\cdot ... + a_{k} $$ e para k par: $$ op([a_0,a_1,a_2,a_3,a_4,a_5... a_{k-1]})= ((((((a_0+a_1)\cdot a_2)+a_3)\cdot a_4)+a_5)\cdot ...) a_{k} $$ sabemos $op(A_{[0,k-1]})$ é op(A) sem ultimo elemento, logo: $$ op(A_{[0,k-1]})= \begin{cases} op(A) - a_k \text{ e } k \text{ é impar } \\ \frac{op(A)}{a_k} \text{ e } k \text{ é par } \\ \end{cases} $$ Q.E.D --- ### Prova 2 (pouco deselegante, mas decidi mostrar) Sabemos que $|A_{[0,k-1]}| = k - 1$ e $\alpha = 0$, logo aplicando a definição: $$ op(A_{[0,k-1]})= \prod_{j=0}^{\lfloor (k-1)/2 \rfloor } a_{2j} + \sum_{i=1}^{\lfloor k/2 \rfloor} ( a_{2i-1} \prod_{j=i}^{\lfloor (k-1)/2 \rfloor} a_{2j} ) $$ #### Caso 1 - $k$ sendo um valor par. para $k$ par temos $\lfloor (k-1)/2 \rfloor = k/2 - 1$ e $\lfloor k/2 \rfloor = k/2$ $$ op(A_{[0,k-1]})= \prod_{j=0}^{k/2 - 1} a_{2j} + \sum_{i=1}^{k/2} ( a_{2i-1} \prod_{j=i}^{k/2 - 1} a_{2j} ) $$ $$ = \prod_{j=0}^{k/2 - 1} a_{2j} + \sum_{i=1}^{k/2} ( a_{2i-1} \prod_{j=i}^{k/2 - 1} a_{2j} ) $$ Através da propriedade distributiva conseguimos chegar no seguinte resultado: $$ = \frac{\prod_{j=0}^{k/2} a_{2j} + \sum_{i=1}^{k/2} ( a_{2i-1} \prod_{j=i}^{k/2} a_{2j} )}{a_{2(k/2)}} $$ Simultaneamente para $k$ par temos também $\lfloor (k+1)/2 \rfloor = k/2$ ou seja para formula a seguinte formula de $op(A)$: $$ op(A)=\prod_{j=0}^{k/2} a_{2j} + \sum_{i=1}^{k/2} ( a_{2i-1} \prod_{j=i}^{k/2} a_{2j} ) $$ através de substituição: $$ op(A_{[0,k-1]}) = \frac{op(A)}{a_{k}} $$ #### Caso 2 - $k$ sendo um valor impar. para $k$ impar temos $\lfloor (k-1)/2 \rfloor = \lfloor k/2 \rfloor = (k-1)/2$ e $\lfloor (k+1)/2 \rfloor = (k+1)/2$, primeiramente para formula de $op(A)$: $$ op(A)=\prod_{j=0}^{(k-1)/2} a_{2j} + \sum_{i=1}^{(k+1)/2} ( a_{2i-1} \prod_{j=i}^{(k-1)/2} a_{2j} ) $$ e para formula de $op(A_{[0,k-1]})$: $$ op(A_{[0,k-1]})=\prod_{j=0}^{(k-1)/2} a_{2j} + \sum_{i=1}^{(k-1)/2} ( a_{2i-1} \prod_{j=i}^{(k-1)/2} a_{2j} ) $$ sabemos que $(k-1)/2=(k+1)/2 - 1$ portanto: $$ op(A_{[0,k-1]})=\prod_{j=0}^{(k-1)/2} a_{2j} + \sum_{i=1}^{(k+1)/2 - 1} ( a_{2i-1} \prod_{j=i}^{(k-1)/2} a_{2j} ) $$ $$ =\prod_{j=0}^{(k-1)/2} a_{2j} + \sum_{i=1}^{(k+1)/2} ( a_{2i-1} \prod_{j=i}^{(k-1)/2} a_{2j} ) - a_{2((k-1)/2)-1} \prod_{j=(k-1)/2}^{(k-1)/2} a_{2j} $$ Através de simplificação e o cancelamento do multiplicatório aonde indice inicial e final são iguais que é uma [multiplicatória vacuosa](https://en.wikipedia.org/wiki/Empty_product) sempre é igual a 1: $$ op(A_{[0,k-1]})=\prod_{j=0}^{(k-1)/2} a_{2j} + \sum_{i=1}^{(k+1)/2} ( a_{2i-1} \prod_{j=i}^{(k-1)/2} a_{2j} ) - a_k \cancel{\prod_{j=(k-1)/2}^{(k-1)/2} a_{2j}} $$ logo substituindo a expressão resultante: $$ op(A_{[0,k-1]})=op(A) - a_k $$ #### Juntando Caso 1 e Caso 2. com isso provamos que : $$ op(A_{[0,k-1]})= \begin{cases} op(A) - a_k \text{ e } k \text{ é impar } \\ \frac{op(A)}{a_k} \text{ e } k \text{ é par } \\ \end{cases} $$ Q.E.D --- ## Algoritmo Dado uma sequencia ordenada $A_n$, nós definimos uma função alternada $op(A)$ que segue: $$ op([a_0,a_1,a_2,a_3,a_4,a_5...])= (((((a_0+a_1)\cdot a_2)+a_3)\cdot a_4)+a_5)\cdot ... $$ Definimos a seguintes sequencias de multiplicações comulativas: $$ M^{+} = [ a_0, a_0 \cdot a_2, a_0 \cdot a_2 \cdot a_4, a_0 \cdot a_2 \cdot a_4 \cdot a_6, \dots] $$ $$ M^{-} = [ a_1, a_1 \cdot a_3, a_1 \cdot a_3 \cdot a_5, a_1 \cdot a_3 \cdot a_5 \cdot a_7, \dots] $$ Com isso conseguimos montar duas expressões $m_{+}$ e $m_{-}$ que utilizam indice inicial $a$ e indice final $b$ para pegar o intervalo em multiplicação de prefixos: $$ \delta_{+}(a, b) = \frac{M_{b}^{+}}{M_{a}^{+}} $$ $$ \delta_{-}(a, b) = \frac{M_{b}^{-}}{M_{a}^{-}} $$ Definimos assim uma função para o intervalo ($\alpha, \beta$): $$ \Delta = \begin{cases} \delta_{-}((\alpha - 1)/2, (\beta - 1)/2) \text{ e } \alpha \text{ é impar } \\ \delta_{+}(\alpha/2, \beta/2) \text{ e } \alpha \text{ é par } \\ \end{cases} $$ Também definimos que são sequencias cumulativas de somas e multiplicações alternadas: $$ P^{+} = [ op(A_{[0,0]}), op(A_{[0,1]}), op(A_{[0,2]}), op(A_{[0,3]}) \dots op(A_{[0,k]})] $$ $$ P^{-} = [ op(A_{[1,0]}), op(A_{[1,1]}), op(A_{[1,2]}), op(A_{[1,3]}) \dots op(A_{[1,k]})] $$ Aonde $|A|=k$ Temos a seguinte formula como válida para todo $\alpha < \beta < k$ e $\alpha, \beta \in \mathbb{N}$: $$ op(A_{[\alpha, \beta]}) = \begin{cases} P^{-}_{\beta-1} + \Delta \cdot (a_\alpha - P^{-}_{\alpha-1}) & \text{se } \alpha \text{ é ímpar} \\ P^{+}_{\beta} + \Delta \cdot (a_\alpha - P^{+}_{\alpha}) & \text{se } \alpha \text{ é par} \end{cases} $$ ### Prova do Algoritmo Dado a seguinte formula, devemos provar que equação é válida: $$ op(A_{[\alpha, \beta]}) = \begin{cases} P^{-}_{\beta-1} + \Delta \cdot (a_\alpha - P^{-}_{\alpha-1}) & \text{se } \alpha \text{ é ímpar} \\ P^{+}_{\beta} + \Delta \cdot (a_\alpha - P^{+}_{\alpha}) & \text{se } \alpha \text{ é par} \end{cases} $$ Temos a seguintes sequencias: $$ P^{+} = [ op(A_{[0,0]}), op(A_{[0,1]}), op(A_{[0,2]}), op(A_{[0,3]}) \dots op(A_{[0,k]})] $$ $$ P^{-} = [ op(A_{[1,0]}), op(A_{[1,1]}), op(A_{[1,2]}), op(A_{[1,3]}) \dots op(A_{[1,k]})] $$ Podemos fazer a simples substuição: $$ op(A_{[\alpha, \beta]}) = \begin{cases} op(A_{[1,\beta-1]}) + \Delta \cdot (a_\alpha - op(A_{[1,\alpha-1]})) & \text{se } \alpha \text{ é ímpar} \\ op(A_{[0,\beta]}) + \Delta \cdot (a_\alpha - op(A_{[0,\alpha]})) & \text{se } \alpha \text{ é par} \end{cases} $$ é trivial repararmos que para todo indice $m$ o elemento da matriz de prefixos de multiplicação é: $$ M^{+}_{m} = \prod_{i=0}^{m}{a_{2i}} $$ $$ M^{-}_{m} = \prod_{i=0}^{m}{a_{2i-1}} $$ e temos: $$ \delta_{+}(a, b) = \frac{M_{b}^{+}}{M_{a}^{+}} = \frac{\prod_{i=0}^{b} a_{2i}}{\prod_{i=0}^{a} a_{2i}} = \prod_{i=a}^{b} a_{2i} $$ $$ \delta_{-}(a, b) = \frac{M_{b}^{-}}{M_{a}^{-}} = \frac{\prod_{i=0}^{b} a_{2i-1}}{\prod_{i=0}^{a} a_{2i-1}} = \prod_{i=a}^{b} a_{2i-1} $$ Analisamos essa expressão: $$ \Delta = \begin{cases} \delta_{-}((\alpha-1)/2, (\beta-1)/2) \text{ e } \alpha \text{ é impar } \\ \delta_{+}(\alpha/2, \beta/2) \text{ e } \alpha \text{ é par } \\ \end{cases} $$ substituimos: $$ \Delta = \begin{cases} \prod_{i=(\alpha-1)/2}^{(\beta-1)/2} a_{2i-1} \text{ e } \alpha \text{ é impar } \\ \prod_{i=\alpha/2}^{\beta/2} a_{2i} \text{ e } \alpha \text{ é par } \\ \end{cases} $$ é possivel também fazer uso da função chão de forma que, e assim podendo igualar os indices das somatórias: $$ \Delta = \begin{cases} \prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i-1} \text{ e } \alpha \text{ é impar } \\ \prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i} \text{ e } \alpha \text{ é par } \\ \end{cases} $$ fazemos também substituicão na expressão original: $$ op(A_{[\alpha, \beta]}) = \begin{cases} op(A_{[1,\beta-1]}) + \prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i-1} \cdot (a_\alpha - op(A_{[1,\alpha-1]})) & \text{se } \alpha \text{ é ímpar} \\ op(A_{[0,\beta]}) + \prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i} \cdot (a_\alpha - op(A_{[0,\alpha]})) & \text{se } \alpha \text{ é par} \end{cases} $$ ### Caso 1 - $\alpha$ sendo par: `Talvez eu necessite ajustar isso para usar uma notação mais compacta.` Vamos analisar a expressão: $$ op(A_{[0,\beta]}) + \prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i} \cdot (a_\alpha - op(A_{[0,\alpha]})) $$ expandindo: $$ op(A_{[0,\beta]}) + a_\alpha\prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i} - op(A_{[0,\alpha]})\prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i} $$ temos: $$ op(A_{[0,\beta]}) = 1 \prod_{i=0}^{\lfloor \beta/2 \rfloor} a_{2i} + a_1 \prod_{i=1}^{\lfloor \beta/2 \rfloor } a_{2i} + a_3 \prod_{i=2}^{\lfloor \beta/2 \rfloor} a_{2i} + a_ 5 \prod_{i=3}^{\lfloor \beta/2 \rfloor} a_{2i} + \dots + a_\beta \prod_{i=\lfloor \beta/2 \rfloor}^{\lfloor \beta/2 \rfloor} a_{2i} $$ $$ op(A_{[0,\alpha]}) = 1 \prod_{i=0}^{\lfloor \alpha/2 \rfloor} a_{2i} + a_1 \prod_{i=1}^{\lfloor \alpha/2 \rfloor } a_{2i} + a_3 \prod_{i=2}^{\lfloor \alpha/2 \rfloor} a_{2i} + a_ 5 \prod_{i=3}^{\lfloor \alpha/2 \rfloor} a_{2i} + \dots + a_\alpha \prod_{i=\lfloor \alpha/2 \rfloor}^{\lfloor \alpha/2 \rfloor} a_{2i} $$ também: $$ op(A_{[0,\alpha]})\prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i} = \prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i} (1 \prod_{i=0}^{\lfloor \alpha/2 \rfloor} a_{2i} + a_1 \prod_{i=1}^{\lfloor \alpha/2 \rfloor } a_{2i} + a_3 \prod_{i=2}^{\lfloor \alpha/2 \rfloor} a_{2i} + a_ 5 \prod_{i=3}^{\lfloor \alpha/2 \rfloor} a_{2i} + \dots + a_\alpha \prod_{i=\lfloor \alpha/2 \rfloor}^{\lfloor \alpha/2 \rfloor} a_{2i}) $$ podemos mudar os indices de todos os multiplicatórios: $$ op(A_{[0,\alpha]})\prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i} = 1 \prod_{i=0}^{\lfloor\beta/2\rfloor} a_{2i} + a_1 \prod_{i=1}^{\lfloor\beta/2\rfloor } a_{2i} + a_3 \prod_{i=2}^{\lfloor\beta/2\rfloor} a_{2i} + a_ 5 \prod_{i=3}^{\lfloor\beta/2\rfloor} a_{2i} + \dots + a_\alpha \prod_{i=\lfloor \alpha/2 \rfloor}^{\lfloor\beta/2\rfloor} a_{2i} $$ com isso fica claro que: $$ op(A_{[0,\beta]}) - op(A_{[0,\alpha]})\prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i} = a_{\alpha+1} \prod_{i=\lfloor \alpha/2 \rfloor}^{\lfloor\beta/2\rfloor} a_{2i} + a_{\alpha+3} \prod_{i=\lfloor \alpha/2 \rfloor+1}^{\lfloor\beta/2\rfloor } a_{2i} + \dots + a_\beta \prod_{i=\lfloor \beta/2 \rfloor}^{\lfloor\beta/2\rfloor} a_{2i} $$ somando $ a_\alpha\prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor}$, nós temos: $$ op(A_{[0,\beta]}) - op(A_{[0,\alpha]})\prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i} + a_\alpha\prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} =a_\alpha\prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} + a_{\alpha+1} \prod_{i=\lfloor \alpha/2 \rfloor}^{\lfloor\beta/2\rfloor} a_{2i} + a_{\alpha+3} \prod_{i=\lfloor \alpha/2 \rfloor+1}^{\lfloor\beta/2\rfloor } a_{2i} + \dots + a_\beta \prod_{i=\lfloor \beta/2 \rfloor}^{\lfloor\beta/2\rfloor} $$ Que é precisamente a definição de $op(A_{[\alpha, \beta]})$ para $\alpha$ par, então: $$ op(A_{[\alpha, \beta]}) = op(A_{[0,\beta]}) - op(A_{[0,\alpha]})\prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i} + a_\alpha\prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i} $$ ou seja: $$ op(A_{[\alpha, \beta]}) = op(A_{[0,\beta]}) + a_\alpha\prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i} - op(A_{[0,\alpha]})\prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i} $$ Com isso provamos para $\alpha$ par a expressão equivale a $op(A_{[\alpha, \beta]}) $. ### Caso 2 - $\alpha$ sendo impar: Vamos analisar a expressão: $$ op(A_{[1,\beta-1]}) + \prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i-1} \cdot (a_\alpha - op(A_{[1,\alpha-1]})) $$ expandindo: $$ op(A_{[1,\beta-1]}) + a_\alpha\prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i-1} - op(A_{[1,\alpha-1]})\prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i-1} $$ temos: $$ op(A_{[1,\beta-1]}) = a_0 \prod_{i=0}^{\lfloor \beta/2 \rfloor} a_{2i-1} + a_2 \prod_{i=1}^{\lfloor \beta/2 \rfloor } a_{2i-1} + a_4 \prod_{i=2}^{\lfloor \beta/2 \rfloor} a_{2i-1} + a_6 \prod_{i=3}^{\lfloor \beta/2 \rfloor} a_{2i-1} + \dots + a_\beta \prod_{i=\lfloor \beta/2 \rfloor}^{\lfloor \beta/2 \rfloor} a_{2i-1} $$ $$ op(A_{[1,\alpha-1]}) = a_0 \prod_{i=0}^{\lfloor \alpha/2 \rfloor} a_{2i-1} + a_2 \prod_{i=1}^{\lfloor \alpha/2 \rfloor } a_{2i-1} + a_4 \prod_{i=2}^{\lfloor \alpha/2 \rfloor} a_{2i-1} + a_6 \prod_{i=3}^{\lfloor \alpha/2 \rfloor} a_{2i-1} + \dots + a_\alpha \prod_{i=\lfloor \alpha/2 \rfloor}^{\lfloor \alpha/2 \rfloor} a_{2i-1} $$ também: $$ op(A_{[1,\alpha-1]})\prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i-1} = \prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i} (a_0 \prod_{i=0}^{\lfloor \alpha/2 \rfloor} a_{2i-1} + a_2 \prod_{i=1}^{\lfloor \alpha/2 \rfloor } a_{2i-1} + a_4 \prod_{i=2}^{\lfloor \alpha/2 \rfloor} a_{2i-1} + a_6 \prod_{i=3}^{\lfloor \alpha/2 \rfloor} a_{2i-1} + \dots + a_\alpha \prod_{i=\lfloor \alpha/2 \rfloor}^{\lfloor \alpha/2 \rfloor} a_{2i-1}) $$ podemos mudar os indices de todos os multiplicatórios: $$ op(A_{[1,\alpha-1]})\prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i-1} = a_0 \prod_{i=0}^{\lfloor \beta/2 \rfloor} a_{2i-1} + a_2 \prod_{i=1}^{\lfloor \beta/2 \rfloor } a_{2i-1} + a_4 \prod_{i=2}^{\lfloor \beta/2 \rfloor} a_{2i-1} + a_6 \prod_{i=3}^{\lfloor \beta/2 \rfloor} a_{2i-1} + \dots + a_\alpha \prod_{i=\lfloor \alpha/2 \rfloor}^{\lfloor \beta/2 \rfloor} a_{2i-1} $$ com isso fica claro que: $$ op(A_{[1,\beta-1]}) - op(A_{[1,\alpha-1]})\prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i-1} = a_{\alpha+2} \prod_{i=\lfloor \alpha/2 \rfloor}^{\lfloor\beta/2\rfloor} a_{2i-1} + a_{\alpha+4} \prod_{i=\lfloor \alpha/2 \rfloor+1}^{\lfloor\beta/2\rfloor } a_{2i-1} + \dots + a_\beta \prod_{i=\lfloor \beta/2 \rfloor}^{\lfloor\beta/2\rfloor} a_{2i-1} $$ somamos $a_\alpha\prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor}$ pois: $$ op(A_{[1,\beta-1]}) - op(A_{[1,\alpha-1]})\prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i-1} + a_\alpha\prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i-1} = a_\alpha\prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor}a_{2i-1} + a_{\alpha+2} \prod_{i=\lfloor \alpha/2 \rfloor}^{\lfloor\beta/2\rfloor} a_{2i-1} + a_{\alpha+4} \prod_{i=\lfloor \alpha/2 \rfloor+1}^{\lfloor\beta/2\rfloor } a_{2i-1} + \dots + a_\beta \prod_{i=\lfloor \beta/2 \rfloor}^{\lfloor\beta/2\rfloor} a_{2i-1} $$ Que é precisamente a definição de $op(A_{[\alpha, \beta]})$ para $\alpha$ impar, então: $$ op(A_{[\alpha, \beta]}) = op(A_{[1,\beta-1]}) + \prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i-1} \cdot (a_\alpha - op(A_{[1,\alpha-1]})) $$ Com isso provamos para $\alpha$ impar a expressão equivale a $op(A_{[\alpha, \beta]})$. ## Finalizando Prova Como provamos que a expressão: $$ op(A_{[\alpha, \beta]}) = \begin{cases} op(A_{[1,\beta-1]}) + \prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i-1} \cdot (a_\alpha - op(A_{[1,\alpha-1]})) & \text{se } \alpha \text{ é ímpar} \\ op(A_{[0,\beta]}) + \prod_{i=\lfloor\alpha/2\rfloor}^{\lfloor\beta/2\rfloor} a_{2i} \cdot (a_\alpha - op(A_{[0,\alpha]})) & \text{se } \alpha \text{ é par} \end{cases} $$ é uma expressão válida, e temos que essa expressão e definida através de simples substuições que são reversiveis da sequencias da nossa expressão original, que é: $$ op(A_{[\alpha, \beta]}) = \begin{cases} P^{-}_{\beta-1} + \Delta \cdot (a_\alpha - P^{-}_{\alpha-1}) & \text{se } \alpha \text{ é ímpar} \\ P^{+}_{\beta} + \Delta \cdot (a_\alpha - P^{+}_{\alpha}) & \text{se } \alpha \text{ é par} \end{cases} $$ Por tanto a seguinte equação é válida. Q.E.D --- Aqui está uma implementação em python: ```python def alternated_sum_mul(arr): if len(arr) == 0: return 0 result, seq = arr[0], [arr[0]] for i in range(1, len(arr)): if i % 2 == 1: result += arr[i] else: result *= arr[i] seq.append(result) return seq def prefix_mult_parity(arr, par=1): result, prefix = 1, [] for i in range(1 if par else 0, len(arr), 2): result *= arr[i] prefix.append(result) return prefix def all_ranges_ordered_op(arr): prefix_sm_0, prefix_sm_1 = alternated_sum_mul(arr), alternated_sum_mul(arr[1:]) prefix_m_0, prefix_m_1 = prefix_mult_parity(arr, 0), prefix_mult_parity(arr, 1) r = [] comb = [(i, j) for i in range(len(arr)) for j in range(i + 1, len(arr))] for i, j in comb: if (i&1): jm, im = j-1, i-1 delta = prefix_m_1[jm//2]//prefix_m_1[im//2] r.append(prefix_sm_1[jm]+delta*(arr[i]-prefix_sm_1[im])) else: delta = prefix_m_0[j//2]//prefix_m_0[i//2] r.append(prefix_sm_0[j]+delta*(arr[i]-prefix_sm_0[i])) return sorted(dict.fromkeys(r + arr)) ```