Robinson are un teren de forma pătrată, ca un tablou bidimensional, cu latura de unităţi (cu parcele). O parcelă este un pătrat elementar al tabloului. Liniile şi coloanele sunt numerotate de la la : 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: , , , … boabe de grâu şi în parcelele de pe prima coloană, recoltele au fost de sus în jos: , , , 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 coloana a fost egală cu suma recoltelor de pe poziţiile () şi (). Dacă aceste sume depăşesc , atunci ele vor fi înlocuite cu numerele formate din ultimele cifre ale sumei respective (de exemplu, dacă , se va reţine numărul ).
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 şi coloana ), de unde va culege toate boabele de pe acea poziţie. Apoi, el va calcula restul împărţirii la 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 , cea vecină din Est, dacă restul este , cea vecină din Sud, dacă restul este , sau cea vecină din Vest, dacă restul este .
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 , , şi şi care să determine:
- recoltele de pe fiecare parcelă;
- 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 în această ordine, separate de câte un spaţiu; şi 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 . 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 și precizări
- , , , sunt numere naturale,
- ;
- Pentru determinarea corectă a valorii se acordă din punctaj.
- Pentru indicarea corectă si a drumului parcurs se acordă încă din punctaj.
Exemplul 1
robinson.in
4 55 1 3
robinson.out
130
1 3
1 4
2 4
2 3
Explicație
, adică tabloul pătrat are latura de unităţi. , deci prima linie este: , , şi . La fel şi prima coloană: , , , , de sus în jos. Apoi linia a doua se completează astfel: , apoi ; apoi etc. Linia a treia, se va completa astfel: ; apoi , apoi etc.
Atentie: şi se reţine , adică numărul format din ultimele cifre ale lui .
b) Poziţia de plecare: , cu rest , deci direcţia este Est. Aici avem , care are rest , deci direcţia este Sud. Aici , cu rest , deci direcţia este Vest, unde avem . Acesta are restul 1 şi direcţia este Est, şi ar trebui să se revină pe poziţia () pe care a mai fost. S-au afişat poziţiile (),(),() şi ().
Dacă în loc de şi am fi avut şi , atunci , cu rest , deci direcţia Est şi ar trebui să iasă din teren. Drumul acesta ar avea un pas.