Fișierul intrare/ieșire senila.in, senila.out Sursă Cerc informatică Vianu
Autor Cristian Frâncu Adăugată de avatar francu Cristian Frâncu francu
Timp de execuție pe test 0.1 sec Limită de memorie 1024 KB
Scorul tău N/A Dificultate stea de rating de tip fullstea de rating de tip fullstea de rating de tip fullstea de rating de tip fullstea de rating de tip empty
open book Poți vedea testele pentru această problemă accesând atașamentele .

Șenila (clasa a 6-a)

Avem o șenilă formată din S segmente. Ea stă cu un singur segment pe pămînt și se poate rostogoli. Fiecare segment este codificat cu un număr binar între 00 și 11 (patru valori posibile). Toată șenila se codifică cu un număr binar B format prin alipirea tuturor numerelor binare de pe segmentele șenilei, astfel:

  • Ultimele două cifre ale numărului B sînt cifrele scrise pe segmentul care stă pe pămînt.
  • Penultimele două cifre ale numărului B sînt cifrele scrise pe segmentul ce urmează să calce cînd șenila se rostogolește.
  • Antepenultimele două cifre ale numărului B sînt cifrele scrise pe segmentul ce urmează să calce cînd șenila se rostogolește de două ori.
    ...
  • Primele două cifre ale numărului B sînt cifrele scrise pe segmentul imediat următor segmentului de pe pămînt, ultimul care ar atinge pămîntul cînd șenila se rostogolește, înainte de o rotație completă.

Remarcați că prin rostogolire șenila își va schimba codificarea.

Șenila se plimbă pe o tablă formată din celule pătrate, astfel: la fiecare pas ea se rostogolește în direcția pe care o codează segmentul care e pe pămînt. Direcția se calculează astfel:

cod segment direcție
00
dreapta
01
jos
10
stînga
11
sus

Inițial tabla conține numărul zero în toate celulele. În celula din care pleacă șenila ea suprascrie codificarea sa, însă nu în binar ci în zecimal. Apoi ea avansează conform instrucțiunilor și, de fiecare dată, își scrie noua codificare în celula în care ajunge, ca număr zecimal.

Cerințe

Se dau numărul de segmente S al șenilei, precum și un număr zecimal Z a cărui reprezentare binară codifică șenila în poziția inițială.

a) Dat numărul K să se spună noua codificare a șenilei după ce șenila s-a rostogolit de K ori. Numărul va fi afișat în zecimal.

b) Dat numărul A și considerînd că șenila pleacă de la linia 1 și coloana 1 a tablei și avansează conform mișcării descrise, să se spună noile ei coordonate după ce ea avansează de A ori.

c) Considerînd că tabla are M linii și N coloane, M și N date și știind că șenila pornește de la linia L și coloana C (prima linie și prima coloană se numerotează cu unu) și mai știind că șenila se rostogolește de maxim R ori, R citit, sau pînă ce aceasta se rostogolește în afara tablei să se afișeze matricea finală atunci cînd șenila se oprește. Toate numerele din matrice vor fi afișate în zecimal.

Date de intrare

Fișierul de intrare senila.in conține două linii. Pe prima linie se află numerele S Z K și A despărțite prin spații, cu semnificația de mai sus. Pe a doua linie se află numerele M N L C și R cu semnificația de mai sus.

Date de ieșire

În fișierul de ieșire senila.out veți afișa pe prima linie un singur număr, codificarea șenilei după K rostogoliri, afișată în zecimal. Pe a doua linie veți afișa două numere separate de un spațiu și anume linia și coloana la care ajunge șenila după A rostogoliri. Pe următoarele M linii veți afișa cîte N numere pe linie, reprezentînd valorile înscrise în matrice la oprirea șenilei, afișate și ele în zecimal.

Restricții

  • 1 ≤ S ≤ 31
  • 0 ≤ K ≤ 100 000 000
  • 0 ≤ A ≤ 1 000 000 000
  • 1 ≤ M, N ≤ 200
  • 1 ≤ L ≤ M
  • 1 ≤ C ≤ N
  • 0 ≤ R ≤ 1 000 000
  • La punctul b) linia și coloana finală nu vor scădea sub zero.
  • Se acordă punctaje parțiale astfel: punctul a) 20%, punctul b) 40%, punctul c) 40%

Exemplu

senila.in senila.out Explicații
4 228 66 70
2 2 1 1 2
78
2 2
228 57
0 78
Șenila are inițial codul zecimal 228, adică codul binar 11100100.
a) După ce rostogolim șenila de 66 de ori ea va avea codul 01001110 în binar, adică 78 zecimal.
b) Șenila pornește de la linia 1 și coloana 1.
După ce rostogolim șenila pe tablă de 70 de ori ea va ajunge la linia 2, coloana 2.
c) Șenila se va rostogoli pe o tablă de 2×2, pornind de la linia 1, coloana 1.
Ea se va rostogoli de două ori, trecînd prin codurile 11100100, 00111001 și 01001110.
Aceste coduri sînt, în zecimal, 228, 57 și 78. Conform segmentului de pe pămînt
șenila va merge întîi la dreapta, apoi în jos și apoi la stînga, rezultînd tabla
afișată.
6 468 3 10
6 6 1 1 568957
1287
4 4
468 117 0 0 0 0
0 3393 0 0 0 0
0 1872 468 117 0 0
0 0 0 3393 0 0
0 0 0 1872 468 117
0 0 0 0 0 1053
 

Trebuie să te autentifici pentru a trimite soluții. Click aici

Indicii de rezolvare

Arată 4 categorii