Se consideră operația
: {1; 2} → {1; 2}
, astfel încât 1
= 2
, 2
= 1
. Operația se extinde asupra oricărei secvențe formate cu cifre de 1
și 2
, de exemplu 1211212121
=2122121212
.
Se consideră șirul infinit s
format cu cifre de 1
și 2
, generat incremental prin extindere după următoarea regulă de concatenare:
s1 = 1221
, s2 = 1221211221121221
, … , sk+1 = sk
sk sk
sk
, …, pentru orice număr natural nenul k
.
Cerința
Să se scrie un program care pentru un n
număr natural nenul cunoscut determină și afișează a n
-a cifră a șirului s
, astfel încât numărul de pași ai programului să fie proporțional cu log2(n)
(complexitate timp logaritmică în funcție de n
).
Date de intrare
Fișierul de intrare extindere.in
conține pe prima linie numărul natural nenul n
.
Date de ieșire
Fișierul de ieșire extindere.out
va conține pe prima linie numărul c
care reprezintă a n
-a cifră a șirului format după regula precizată mai sus.
Restricții și precizări
1 ≤ n ≤ 1.000.000
Exemplu:
extindere.in
18
extindere.out
1
Explicație
Pentru a afla cifra aflată pe poziția n=18
trebuie efectuate 3
pași de extindere.
Șirul generat este 1221211221121221 2112122112212112 2112122112212112 1221211221121221
.
Cifra aflată pe poziția 18
este 1
.