Zadanie python - obliczanie silni

0

WITAM, otóż jest to moja pierwsza styczność z pythonem, nie miałem nigdy okazji wcześniej robić CZEGOKOLWIEK w nim, dostaliśmy takie zadanie i jeśli jest szansa, prosiłbym o jakieś nakierowanie na dobre tory, wytłumaczenie mniej więcej jak zacząć taki program? :)

Poprzedni post przeniesiony do kosza, gdyż nie wiedziałem jak edytować post, żeby powiedzieć gdzie tkwi problem.
Zacząłbym od notacji wykładniczej i sposobu w jaki go zapisać jako część działania przez program w pythonie.!
title

0

BUMP, bo miałem podobne pytanie kiedyś i nie wiem jak zrobić.

3

Mnie na kalkulatorze wyszło że 49! to 6,08 * 10^62. Jak to podzielić przez 10^15 to mamy 6,08 * 10^47 [s].
Ja nie jestem przekonany co do tego, że jest to zadanie programistyczne. Ma to raczej zobrazować, że pomimo, że mamy szybki komputer czas rozwiązania niektórych problemów bardzo się wydłuża wraz ze wzrostem ilości elementów; zmiana ilości miast z 15 na 50 zmieniło znacznie czas wybierania najlepszego ustawienia.

No i jest to jakiś tam wstęp do rozważania złożoności obliczeniowej programów i algorytmów, które próbują znaleźć rozwiązanie nie koniecznie najlepsze ale "w sensownym" czasie.

0

Nie wiem czy chodzi po prostu o wyliczenie silni i ilorazu, ale jeśli tak, to:

def factorial(n):
    if n < 0:
        raise ValueError("n can't be less than 0")

    if n <= 1:
        return 1

    return n * factorial(n - 1)


locations = 50
calculations_per_second = 1e15

result = factorial(locations - 1) / calculations_per_second

Wynik: 6.082818640342675e+47, czyli 608,281,864,034,267,500,000,000,000,000,000,000,000,000,000,000 sekund.

To jest wiele, wiele, wiele razy więcej niż wg naukowców trwa wszechświat, jakby ktoś pytał :)

0
>>> from math import factorial
>>> factorial(50-1)//10**15
608281864034267560872252163321295376887552831379L

1 użytkowników online, w tym zalogowanych: 0, gości: 1