Informatică, întrebare adresată de ionutg38, 9 ani în urmă

Costică este alergător la un maraton. El parcurge un traseu sub forma unei matrice cu n linii şi m coloane linie cu linie şi pe fiecare linie, de la stânga la dreapta. Matricea conţine numere naturale.

Dacă Costică întâlneşte un număr prim, el este penalizat, fiind trimis pe linia şi coloana anterioară, iar dacă acesta întâlneşte un număr perfect, poate avansa pe linia şi coloana următoare. Dacă mişcarea pe linie şi pe coloană depăşeşte limitele matricei, atunci se va efectua numai mişcarea care nu trece de aceste limite sau nu se va efectua nici o mişcare.

Afişaţi timpul t în care parcurge Costică traseul, ştiind că deplasarea dintr-un element al matricei în oricare altul durează o secundă, iar fiecare penalizare sau avansare durează o secundă.

Un număr este perfect dacă suma cifrelor lui este un număr prim.

Dacă un număr este şi prim şi perfect, atunci el va fi considerat prim.

După penalizare sau avansare, numerele prime sau perfecte îşi pierd proprietățile.

Date de intrare
Programul citește de la tastatură numerele n şi m, iar apoi n*m numere naturale, separate prin spații.

Date de ieșire
Programul va afișa pe ecran numărul t, reprezentând timpul în care Costică parcurge traseul.

Restricții și precizări
1 ≤ n,m ≤ 500
cele n numere citite vor fi mai mici decât 1.000.000



Exemplu
Intrare

4 5
6 9 3 2 1
8 3 12 4 0
1 1 34 8 7
5 3 5 9 8
Ieșire

28
Explicație
2 3 5 7 sunt numere prime, iar 2 3 5 7 12 34 sunt numere perfecte.

Răspunsuri la întrebare

Răspuns de gabi1110
0
ca si idee de rezolvare, eu mă gândesc să mai iei o matrice în care să bifezi doar numerele prime si perfecte(ia-ti o notație pt cele prime si o alta pt cele perfecte) si vei "dezactiva" numerele in timp ce parcurgi matricea data.
Nu am înțeles exact ce se întâmplă când nu are unde să "Sara" de pe o linie și coloana pe alta...Dar teoretic asta se poate regla cu un If...

gabi1110: nu pot înțelege prea mult din cod(ori e de vina aplicatia ca afișează prost, ori copy-paste ul nu a funcționat cum trebuie)
gabi1110: insa presupunerea mea e ca nu e clar cum sare Cost prin matricea aia, adica la margini ce face?
gabi1110: vineri voi ajunge si eu la un compilator si voi implementa ceva. Dar sper sa iti iasa cv. Cate pct iei pe ea?
ionutg38: Nu iau decat 20 de puncte din 100. La margini spune in enunt asa: "Dacă mişcarea pe linie şi pe coloană depăşeşte limitele matricei, atunci se va efectua numai mişcarea care nu trece de aceste limite sau nu se va efectua nici o mişcare."
gabi1110: asta înseamnă ca daca sunt pe m[1,3] ma duc pe m[1,2]?
ionutg38: Nu stiu mai mult decat ce scrie in enunt
ionutg38: Indicații de rezolvare


Se parcurge matricea.
La întâlnirea unui număr prim, indicii matricei scad cu 1 unitate.
La întâlnirea unui numar perfect, indicii matricei cresc cu 1 unitate.
Pe măsură ce parcurgem, contorizăm paşii.
ionutg38: Atat mai stiu, indicatiile de mai sus
gabi1110: atunci ai 2 foruri de parcurs matricea si la fiecare poz consulti mat in care tii minte nr prime si nr perfecte si vezi daca trb sa inaintezi sau sa mergi inapoi. si pt cand esti pe poz de margine, incrementezi/decrementezi doar ce se poate
ionutg38: Asteptam un raspuns complet (adica programul C++) pentru ca am incercat si eu asa dar poate gresesc undeva si nu stiu unde.
Alte întrebări interesante