Witam, mam problem dotyczący zadania. Chyba nie mogę wklejać kodów źrółowych do poprawnych rozwiązań, więc tylko opiszę o co mi chodzi. Mianowicie próbuję zoptymalizować rozwiązanie, żeby program zużywał jak najmniej pamięci i... bez skutku. Patrząc na rozwiązania innych użytkowników dla C++ widzę wyniki rzędu 2M, mój program to 15M, bez różnicy jak go rozplanuję. Próbowałem do liczenia silni funkcji rekurencyjnej, pętli for oraz rozwiązania w ogóle bez liczenia silni, z wykorzystaniem samych warunków i cały czas nie mogę zejść poniżej tej magicznej granicy. Jestem początkujący, ale interesuje mnie co mógłbym z tym zrobić, może problem dla większości trywialny, ale jak na razie nie dla mnie
Załóż, że nie masz na to wpływu - i faktycznie tak jest. Jak już tak koniecznie chcesz porównywać z innymi zgłoszeniami, to porównuj też datę zgłoszeń, wersję kompilatora itd. Kiedyś były inne czasy, inny sprzęt, inne kompilatory [wersje] inne ustawienia opcji kompilacji itd. Teraz to wszystko buja w obłokach i chmurach, a pamięci jest od za....trzęsienia i nikt nie będzie się przejmował jakimiś marnymi 15 Mb w tą czy w tamtą stronę.
PS
nikt == admini SPOJ'a
Dobra, skoro tak mówisz to się nie będę tym na razie przejmował zdziwiło mnie tylko, że stosując funkcję rekurencyjną osiągnąłem taki sam wynik co stosując pętlę, ale pewnie różnica jest widoczna dopiero przy większej ilości operacji, w sumie tutaj w rekurencji to tylko 10 wywołań maksymalnie, także ilość nie powala pewnie, żeby zrobić jakąkolwiek różnicę. Dzięki za szybką odpowiedź
Inaczej. Na dzień dobry dostajesz minimum (np ~15 Mb dla CPP14). Jeżeli wystarczy Ci mniej, to i tak zostanie 15. Jak potrzebujesz więcej to dostaniesz więcej, ale nie nieskończoność: http://pl.spoj.com/ranks/FCTRL3/lang=CPP14,start=86213
Gdy się będziesz przesuwał w lewo [klikając w numerki stron 45, 44, 43 .....], znajdziesz taki dzień, w którym nastąpiła zmiana.
Jak dla mnie, nie [koniecznie].
PS
O mądrości lub głupocie konstrukcji decyduje konstruktor [coder].
PS 2
Dla SPOJ’a liczy się tylko uzyskany w rozsądnym czasie wynik, a nie metoda. Możesz więc spokojnie użyć zamiast: “najgłubszej konstrukcji z [kilku] ifów”, dowolnej innej, np ze switch, z jednym ifem, lub całkowicie bez, a także możesz to zrobić, jak tylko sobie pomyślisz, czy rekurencyjnie czy iteracyjnie czy jeszcze inaczej. Masz tu całkowitą swobobę, liczy się cel a nie środki.
Jeżeli jesteś w stanie zaproponować sensowne rozwiązanie rekurencyjne dla tego problemu to dlaczego nie? Sytuacja jest o tyle prosta, że sensowne rozwiązanie oznacza jedynie AC czyli ma wyłącznie mieścić się w jakimś limicie czasowym i działać zaledwie dla wybranych, podanych w treści zadania liczb. A jeżeli będzie ono lepsze od ifów to chętnie je poznam.
Coś słabo czytałeś. Ile zajmie ci wykonanie programu dla tego testu?
10
1000000000
1000000000
1000000000
1000000000
1000000000
1000000000
1000000000
1000000000
1000000000
1000000000
Poza tym twój program daje złe wyniki: https://ideone.com/c7ZvlY5