Revizia anterioară Revizia următoare
Fişierul intrare/ieşire: | fractal.in, fractal.out | Sursă | preONI 2004 |
Autor | Cosmin Silvestru Negruseri | Adăugată de | |
Timp execuţie pe test | 0.25 sec | Limită de memorie | 65536 kbytes |
Scorul tău | N/A | Dificultate |
Vezi solutiile trimise | Statistici
Fractal
Hilbert a gasit o curba care poate trece prin fiecare punct al spatiului, aceasta curba se bazeaza pe o constructie recursiva. Numim curba de ordin Hilbert de ordinul K curba curba realizata dupa urmatoarele reguli ce trece prin fiecare nod al unei grile de 2K*2K noduri si trece prin noduri vecine ale grilei.
Curba Hilbert de ordinu 1 este o curba simpla:
Vor fi descries in urmatoarele imagini trecerile de la o curba de ordin x la o curba de ordin x+1:
Ordin 1 -> Ordin 2
Ordin 2 -> Ordin 3
Ordin 3 -> Ordin 4
Ordin 4 -> Ordin 5
Se dau ca date de intrare din fisierul fractal.in numerele K, x si y, unde K este ordinul unei curbe, iar x si y sunt coordanate intregi in interiorul unui patrat de dimensiune 2K*2K. Se cere sa scrieti in fisierul de iesire fractal.out in cati pasi se ajunge la coordonatele (x,y) daca punctele din patrat sunt parcurse in ordinea data de curba Hilbert de ordin K.
Restrictii si precizari
- 1 ≤ k ≤ 15
- 1 ≤ x,y ≤ 2K
- Coordonatele x si y sunt intre 1 si 2K inclusiv (x reprezinta coloana, y linia), iar coltul din stanga sus are coordonatele (1,1).
Exemple
fractal.in | fractal.out |
---|---|
1 1 1 | 0 |
3 2 3 | 13 |
2 4 1 | 15 |