Zadanie python - obliczanie silni

Zadanie python - obliczanie silni
korneliuszburian
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 4 lata
  • Postów:3
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

edytowany 3x, ostatnio: Ktos
AK
ale o ssssso chodzi ?
korneliuszburian
By obliczyć podobne zadanie aczkolwiek dla 50 stanów
KR
Czyli, że masz policzyć ile to jest 50! , czyli w sumie wyliczanie silni?
AK
nauczyciel sadysta dał zadanie niczego nie tłumacząc wcześniej ...
KHX
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 4 lata
  • Lokalizacja:według VPN
  • Postów:194
0

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


Sic Parvis Magna
Wiesz co się liczy? Szacunek ludzi piwnicy.
UglyMan
a co to jest BUMP?
KHX
Podbicie postu.
KR
  • Rejestracja:ponad 8 lat
  • Ostatnio:7 dni
  • Postów:166
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.

edytowany 1x, ostatnio: krsp
bearek
  • Rejestracja:prawie 5 lat
  • Ostatnio:ponad rok
  • Postów:85
0

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

Kopiuj
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ł :)

edytowany 1x, ostatnio: bearek
Shalom
from math import factorial
bearek
O proszę, dopiero się uczę Pythona i nie wiedziałem, że silnia też jest. Dzięki :)
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0
Kopiuj
>>> from math import factorial
>>> factorial(50-1)//10**15
608281864034267560872252163321295376887552831379L

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
enedil
a co to za sufiks L? mamy rok 2020 :v
Shalom
py2 krul :P

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.