Dati i nnumeri in un array (non si può presumere che siano numeri interi), vorrei calcolare il prodotto di tutti i sottogruppi di dimensioni n-1.
Puoi farlo moltiplicando tutti i numeri insieme e poi dividendoli uno per volta, purché nessuno dei numeri sia zero. Tuttavia, quanto velocemente puoi farlo senza divisione?
Se non si consente la divisione, qual è il numero minimo di operazioni aritmetiche (ad esempio moltiplicazione e addizione) necessarie per calcolare il prodotto di tutti i sottogruppi di dimensioni n-1?
Chiaramente puoi farlo in (n-1)*nmoltiplicazioni.
Per chiarire, l'output è nprodotti diversi e le uniche operazioni consentite oltre alla lettura e alla scrittura in memoria sono la moltiplicazione, l'addizione e la sottrazione.
Esempio
Se l'ingresso ha tre numeri 2,3,5, allora l'uscita è tre numeri 15 = 3*5, 10 = 2*5e 6 = 2*3.
Criterio vincente
Le risposte dovrebbero fornire una formula esatta per il numero di operazioni aritmetiche che il loro codice utilizzerà in termini di n. Per semplificarti la vita, collegherò semplicemente la n = 1000tua formula per giudicare il suo punteggio. Più basso è il migliore.
Se è troppo difficile produrre una formula esatta per il tuo codice, puoi semplicemente eseguirlo n = 1000e contare le operazioni aritmetiche nel codice. Una formula esatta sarebbe comunque la migliore.
Dovresti aggiungere il tuo punteggio n=1000alla tua risposta per un facile confronto.
+sugli indici contano? In questo caso, conta anche l'indicizzazione di array? (dal momento che è dopo tutto lo zucchero sintattico per l'aggiunta e la dereferenziazione).
(n-1)*nmoltiplicazioni Intendi (n-2)*n, vero?