Dados os n
números em uma matriz (você não pode assumir que sejam números inteiros), gostaria de calcular o produto de todos os subconjuntos de tamanho n-1
.
Você pode fazer isso multiplicando todos os números e depois dividindo cada um por vez, desde que nenhum deles seja zero. No entanto, com que rapidez você pode fazer isso sem divisão?
Se você não permite a divisão, qual é o número mínimo de operações aritméticas (por exemplo, multiplicação e adição) necessárias para calcular o produto de todos os subconjuntos de tamanho n-1?
Claramente você pode fazê-lo em (n-1)*n
multiplicações.
Para esclarecer, a saída é de n
produtos diferentes e as únicas operações além da leitura e gravação na memória permitidas são multiplicação, adição e subtração.
Exemplo
Se a entrada tem três números 2,3,5
, então a saída é de três números 15 = 3*5
, 10 = 2*5
e 6 = 2*3
.
Critério de vitória
As respostas devem fornecer uma fórmula exata para o número de operações aritméticas que seu código usará em termos de n
. Para simplificar a vida, apenas conectarei n = 1000
sua fórmula para avaliar sua pontuação. Quanto menor, melhor.
Se for muito difícil produzir uma fórmula exata para o seu código, você pode executá-la n = 1000
e contar as operações aritméticas no código. Uma fórmula exata seria melhor no entanto.
Você deve adicionar sua pontuação n=1000
à sua resposta para facilitar a comparação.
+
nos índices, contam? Se for esse o caso, a indexação de array também conta? (já que, afinal, é açúcar sintático para adição e desreferenciação).
(n-1)*n
multiplicações. Você quer dizer (n-2)*n
, certo?