1 / 11
Jan 2020

Problem polega na tym, że sędzia uznaje, że program przekroczył limit czasowy…

dla 0 działa
ale po 65 wynik jest 0 bo nie mieści się w zakresie zmiennej…
nie znam większej niż unsigned long long co mieści 0 ÷ 26^4…

  • created

    Jan '20
  • last reply

    Jan '20
  • 10

    replies

  • 1.1k

    views

  • 3

    users

  • 4

    links

Niestety 0!=1 , wiec dla 0 nie dziala.

przepelnienie zmiennej w (typu unsigned long long ) nastepuje dla wartosci powyzej 20. Wyniki od 21 do 65 sa nieprawidlowe. zmienna wtedy przyjmuje wartosci bezuzyteczne.
Powyzej 65 wyniki sa prawidlowe, bo nastapilo zzerowanie zmiennej przypadkowe.
zwykly int wystarczy do rozwiazania tego zadania pomimo ze dla niego przepelnienie nastepuje po 13!

dlatego dodałem if’a że gdy jest 0 [ if(a==0) ]to zmienia zmienna (wynik) “w” na 0 i wtedy pomija whil’a i przechodzi do wypisania "0 0"
no dobra, zamienię na int, ale nadal mam, że przekracza limit czasu…

Przecież ten if, który dodałeś jest bez sensu. Wynika z niego, że 0! = 0 a to przecież jest bzdura. Int wystarczy przy właściwym algorytmie. Przy Twoim podejściu nie da się tego zrobić żadnym typem.
Wystarczy i trzeba POMYŚLEĆ

jak? :confused:
skoro dałem
if(a==0)
w=0;
jeżeli wpiszesz 0 to zamień wynik na 0 bo był domyślnie 1 aby szło mnożyć gdyby (i tu instrukcja od while) wpisana liczba była by równa 1 bądź większa

Zacznij od tego, że przemyślisz jeszcze raz, dwa razy,… n razy to co napisał @pawoj20 i ja odnośnie rozwiązania dla 0. Podpowiedź: ile wynosi 0! a ile daje ten program?

mehh
faktiko
przeczytałem 0 negacja =0 zamiast 0 silnia
mój błąd… poprawiłem
lecz teraz pozostaje czas wykonania programu
cały czas mam, ze przekraczam limit
aktualnie to wygląda tak

Rzeczywiscie dziwnie wyszlo z tym zapisem silni/negacji. :wink:
Moze policz na kartce/kalkulatorze silnie dla kolejnych liczb. Zwroc uwage na cyfry jednosci i dziesiatek. Przy 10silnia i nastepnych mozna cos zauwazyc.

po 10! zakończone jest zerami :smiley:
Wielkie dzięki
nawet nie wiesz jak zielony pasek mnie uradował :smiley: