Biorąc pod uwagę n
liczby w tablicy (nie można zakładać, że są to liczby całkowite), chciałbym obliczyć iloczyn wszystkich podzbiorów wielkości n-1
.
Możesz to zrobić, mnożąc wszystkie liczby, a następnie dzieląc je kolejno, o ile żadna z liczb nie jest równa zero. Jak szybko możesz to zrobić bez podziału?
Jeśli nie pozwalasz na dzielenie, jaka jest minimalna liczba operacji arytmetycznych (np. Mnożenie i dodawanie) potrzebnych do obliczenia iloczynu wszystkich podzbiorów wielkości n-1?
Oczywiście możesz to zrobić w (n-1)*n
multiplikacjach.
Aby wyjaśnić, dane wyjściowe są n
różnymi produktami, a jedynymi dozwolonymi operacjami oprócz odczytu i zapisu do pamięci są mnożenie, dodawanie i odejmowanie.
Przykład
Jeżeli wejście ma trzy numery 2,3,5
, to wyjście jest trzy numery 15 = 3*5
, 10 = 2*5
i 6 = 2*3
.
Kryterium wygranej
Odpowiedzi powinny zawierać dokładną formułę liczby operacji arytmetycznych, których użyje ich kod n
. Aby ułatwić życie, po prostu podłączę się n = 1000
do twojej formuły, aby ocenić jej wynik. Im niższy, tym lepiej.
Jeśli zbyt trudno jest stworzyć dokładną formułę dla swojego kodu, możesz po prostu uruchomić go n = 1000
i policzyć operacje arytmetyczne w kodzie. Dokładna formuła byłaby jednak najlepsza.
Powinieneś dodać swój wynik n=1000
do swojej odpowiedzi w celu łatwego porównania.
+
na indeksach liczyć? Jeśli tak jest, czy liczy się również indeksowanie tablic? (ponieważ jest to przecież cukier syntaktyczny do dodawania i dereferencji).
(n-1)*n
multiplikacjach. Masz na myśli (n-2)*n
, prawda?