Witam.
Mam do rozwiązania takie zadanie:
Bajtazar przechadzał się koło Biblioteki Uniwersyteckiej w Warszawie i na jednej z fasad zobaczył fragment programu opatrzony pytaniem „Czy się zatrzyma?”. Problem wyglądał intrygująco, dlatego Bajtazar postanowił zająć się nim po powrocie do domu. Niestety, gdy zapisywał kod na kartce (od razu zamieniając go na
język C++), popełnił błąd i zanotował:
while (i! = 1)
if
(i% 2 == 0)
i=i /2;
else
i= 3∗i+ 3;
Bajtazar próbuje teraz ustalić, dla jakich wartości początkowych zmiennej i zapisany przez niego program zatrzyma się. Zakładamy przy tym, że zmienna
i ma nieograniczony rozmiar, tj. może przyjmować dowolnie duże wartości.
Wejście
Pierwszy i jedyny wiersz wejścia zawiera jedną liczbę całkowitą i (2≤ i ≤10^14), dla której należy sprawdzić,czy podany program zatrzyma się.
Wyjście
W pierwszym i jedynym wierszu wyjścia Twój program powinien wypisać jedno słowo TAK, jeśli programzatrzyma się dla podanej wartości i, lub NIE
w przeciwnym przypadku.
Przykład
Dla danych wejściowych:
4
poprawnym wynikiem jest:
TAK
Wiem, że jeśli i będzie potęgą 2 program powinien wypisać TAK, a jeśli i będzie nieparzyste powinien wypisać "NIE". Proszę o pomoc, jakie założenia mogę jeszcze zrobić?