Dados os nnú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)*nmultiplicações.
Para esclarecer, a saída é de nprodutos 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*5e 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 = 1000sua 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 = 1000e 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)*nmultiplicações. Você quer dizer (n-2)*n, certo?