Dados los n
números en una matriz (no se puede suponer que son enteros), me gustaría calcular el producto de todos los subconjuntos de tamaño n-1
.
Puede hacerlo multiplicando todos los números y luego dividiéndolos por turnos, siempre que ninguno de los números sea cero. Sin embargo, ¿qué tan rápido puedes hacer esto sin división?
Si no permite la división, ¿cuál es el número mínimo de operaciones aritméticas (por ejemplo, multiplicación y suma) necesarias para calcular el producto de todos los subconjuntos de tamaño n-1?
Claramente puedes hacerlo en (n-1)*n
multiplicaciones.
Para aclarar, la salida son n
productos diferentes y las únicas operaciones aparte de leer y escribir en la memoria permitidas son la multiplicación, la suma y la resta.
Ejemplo
Si la entrada tiene tres números 2,3,5
, entonces la salida es tres números 15 = 3*5
, 10 = 2*5
y 6 = 2*3
.
Criterio ganador
Las respuestas deben dar una fórmula exacta para la cantidad de operaciones aritméticas que usará su código en términos de n
. Para simplificar la vida, simplemente conectaré n = 1000
tu fórmula para juzgar su puntaje. Cuanto más bajo, mejor.
Si es demasiado difícil producir una fórmula exacta para su código, puede ejecutarla n = 1000
y contar las operaciones aritméticas en el código. Sin embargo, una fórmula exacta sería la mejor.
Debe agregar su puntaje n=1000
a su respuesta para una comparación fácil.
+
en índices ? Si este es el caso, ¿también cuenta la indexación de matrices? (dado que, después de todo, es el azúcar sintáctico para sumar y desreferenciar).
(n-1)*n
multiplicaciones ¿ Quieres decir (n-2)*n
, verdad?