Bei gegebenen n
Zahlen in einem Array (Sie können nicht davon ausgehen, dass es sich um Ganzzahlen handelt) möchte ich das Produkt aller Teilmengen der Größe berechnen n-1
.
Sie können dies tun, indem Sie alle Zahlen miteinander multiplizieren und dann nacheinander durch jede dividieren, solange keine der Zahlen Null ist. Wie schnell können Sie dies jedoch ohne Unterteilung tun?
Wenn Sie keine Division zulassen, wie viele arithmetische Operationen (z. B. Multiplikation und Addition) sind mindestens erforderlich, um das Produkt aller Teilmengen der Größe n-1 zu berechnen?
Natürlich können Sie es in (n-1)*n
Multiplikationen tun .
Zur Verdeutlichung handelt es sich bei der Ausgabe um n
verschiedene Produkte, und die einzigen Operationen, die außer Lesen und Schreiben in den Speicher zulässig sind, sind Multiplikation, Addition und Subtraktion.
Beispiel
Wenn die Eingabe drei Zahlen hat 2,3,5
, dann ist die Ausgabe drei Zahlen 15 = 3*5
, 10 = 2*5
und 6 = 2*3
.
Gewinnkriterium
Die Antworten sollten eine genaue Formel für die Anzahl der Rechenoperationen enthalten, für die der Code verwendet n
. Um das Leben einfacher zu machen, werde ich mich einfach n = 1000
an Ihre Formel anschließen, um deren Punktzahl zu beurteilen. Je niedriger desto besser.
Wenn es zu schwierig ist, eine genaue Formel für Ihren Code zu erstellen, können Sie sie einfach ausführen n = 1000
und die arithmetischen Operationen im Code zählen. Eine genaue Formel wäre jedoch am besten.
Sie sollten Ihre Punktzahl für n=1000
Ihre Antwort zum einfachen Vergleich hinzufügen .
+
auf Indizes ? Wenn dies der Fall ist, zählt dann auch die Array-Indizierung? (da es sich immerhin um syntaktischen Zucker zur Zugabe und Dereferenzierung handelt).
(n-1)*n
Multiplikationen machen. Du meinst (n-2)*n
, richtig?