Fișierul intrare/ieșire robinson.in, robinson.out Sursă ONI 2005 clasa a 6-a
Autor Dan Grigoriu Adăugată de avatar francu Cristian Frâncu francu
Timp de execuție pe test 0.1 sec Limită de memorie 2048 KB
Scorul tău N/A Dificultate stea de rating de tip fullstea de rating de tip emptystea de rating de tip emptystea de rating de tip emptystea de rating de tip empty
open book Poți vedea testele pentru această problemă accesând atașamentele .

Robinson (clasa a 6-a)

Robinson are un teren de forma pătrată, ca un tablou bidimensional, cu latura de m unități (cu m2 parcele). O parcelă este un pătrat elementar al tabloului. Liniile și coloanele sunt numerotate de la 1 la m: liniile de sus în jos, iar coloanele de la stânga la dreapta.

El a semănat grâu și s-a rugat să aibă o recoltă bogată. Ruga i-a fost ascultată și grâul a răsărit astfel: în parcelele din prima linie, recoltele au fost de la stânga spre dreapta: n, n+1, n+2, … boabe de grâu și în parcelele de pe prima coloană, recoltele au fost de sus în jos: n, n+1, n+2, … boabe de grâu.

Apoi, dacă parcurgem celelalte parcele linie cu linie începând cu a doua linie, iar în cadrul unei linii, începând cu coloana a doua, atunci recolta din linia i și coloana j a fost egală cu suma recoltelor de pe pozițiile (i-1,j) și (i,j-1).

Dacă aceste sume depășesc 999, atunci ele vor fi înlocuite cu numerele formate din ultimele 3 cifre ale sumei respective (de exemplu, dacă suma=1234, se va reține numărul 234).

Odată cu împlinirea rugii, Robinson a avut un vis în care, pentru a avea noroc și anul viitor, i se cerea ca în prima zi să culeagă grâul astfel: să plece de la o poziție dată (linia l și coloana c), de unde va culege toate boabele de pe acea poziție. Apoi, el va calcula restul împărțirii la 4 a numărului de boabe de pe acea poziție. Poziția următoare pentru cules va fi cea vecină din Nord, dacă restul este 0, cea vecină din Est, dacă restul este 1, cea vecină din Sud, dacă restul este 2, sau cea vecină din Vest, dacă restul este 3.

Drumul acesta pe care l-a visat se va opri fie când la poziția următoare este în afara terenului, fie când poziția următoare este una de pe care s-a cules deja recolta.

Cerință

Scrieți un program care să citească numerele m, n, l și c și care să determine:

a) recoltele de pe fiecare parcelă;
b) succesiunea parcelelor vizitate, în ordinea în care s-a cules grâul în drumul visat;

Date de intrare

De pe prima linie a fișierului de intrare robinson.in se citesc numerele m n l c în această ordine, separate de câte un spațiu; l și c indică o poziție corectă din tablou.

Date de ieșire

Pe prima linie a fișierului de ieșire robinson.out se va afișa valoarea a[m][m]. Următoarele linii vor conține câte două numere naturale separate de un spațiu indicând coordonatele fiecărei parcele din drumul parcurs: primul număr indică linia iar al doilea număr coloana parcelei vizitate.

Restricții

  • m, n, l, c sunt numere naturale,
  • 1 ≤ m ≤ 20
  • 1 ≤ n ≤ 100
  • Pentru determinarea corectă a valorii a[m][m] se acordă 30% din punctaj.
  • Pentru indicarea corectă a drumului parcurs se acordă încă 70% din punctaj.

Exemplu

robinson.in robinson.out Explicații
4 55 1 3
130
1 3
1 4
2 4
2 3
a) m=4, adică tabloul pătrat are latura de 4 unități. n=55, deci prima linie este:
55, 56, 57 și 58. La fel și prima coloană: 55, 56, 57, 58, de sus în jos. Apoi linia
a doua se completează astfel: a[2,2]=a[1,2]+a[2,1]=56+56=112, apoi
a[2,3] = a[1,3]+a[2,2]=57+112=169 ; apoi a[2,4]=a[1,4]+a[2,3] etc. Linia a treia,
se va completa astfel: a[3,2]=a[2,2]+a[3,1]; apoi a[3,3]=a[2,3]+ a[3,2], apoi
a[3,4]= a[2,4]+ a[3,3] etc.
 
Atentie: a[4,4]=a[3,4]+a[4,3]=565+565=1130 și se reține a[4,4]=130, adică numărul
format din ultimele 3 cifre ale lui 1130.
 
b) Poziția de plecare: a[1;3]=57, cu rest 1, deci direcția este Est. Aici avem a[1,4]=58,
care are rest 2, deci direcția este Sud. Aici a[2,4]=227, cu rest 3, deci direcția este
Vest, unde avem a[2,3]=169. Acesta are restul 1 și direcția este Est, și ar trebui să se
revină pe poziția (2,4) pe care a mai fost. S-au afișat pozițiile (1;3),(1;4),(2,4) și (2;3).
Dacă în loc de l=1 și c=3 am fi avut l=3 și c=4, atunci a[3,4] = 565, cu rest 1, deci
direcția Est și ar trebui să iasă din teren. Drumul acesta ar avea un pas.

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

Indicii de rezolvare

Arată 5 categorii