Étant donné les n
nombres dans un tableau (vous ne pouvez pas supposer que ce sont des entiers), je voudrais calculer le produit de tous les sous-ensembles de taille n-1
.
Vous pouvez le faire en multipliant tous les nombres ensemble, puis en les divisant à tour de rôle, tant qu'aucun des nombres n'est nul. Cependant, à quelle vitesse pouvez-vous le faire sans division?
Si vous n'autorisez pas la division, quel est le nombre minimum d'opérations arithmétiques (par exemple multiplication et addition) nécessaires pour calculer le produit de tous les sous-ensembles de taille n-1?
De toute évidence, vous pouvez le faire en (n-1)*n
multiplications.
Pour clarifier, la sortie est n
différents produits et les seules opérations en dehors de la lecture et de l' écriture à la mémoire sont permis la multiplication, l' addition et la soustraction.
Exemple
Si l'entrée a trois nombres 2,3,5
, alors la sortie est trois nombres 15 = 3*5
, 10 = 2*5
et 6 = 2*3
.
Critère gagnant
Les réponses devraient donner une formule exacte pour le nombre d'opérations arithmétiques que leur code utilisera en termes de n
. Pour vous simplifier la vie, je vais simplement brancher n = 1000
votre formule pour juger de son score. Le plus bas sera le mieux.
S'il est trop difficile de produire une formule exacte pour votre code, vous pouvez simplement l'exécuter n = 1000
et compter les opérations arithmétiques dans le code. Une formule exacte serait cependant préférable.
Vous devez ajouter votre score pour n=1000
à votre réponse pour une comparaison facile.
+
sur les indices comptent-elles? Si tel est le cas, l'indexation des tableaux compte-t-elle également? (car c'est après tout du sucre syntaxique pour l'addition et le déréférencement).
(n-1)*n
multiplications Vous voulez dire (n-2)*n
, non?