Rezolvare completă PbInfo #1748 Cursă

Cerința

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.

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema Cursă :

#include <iostream>

using namespace std;

int main()
{
   int n , m , i , f[501][501] , t=0 , j , sum , ok , ok2 , h , copie ;
   cin >> n >> m ;
   for(i=1; i<=n; i++)
   {
       for(j=1; j<=m; j++)
       {
           cin >> f[i][j] ;
       }
   }
   for(i=1; i<=n; i++)
   {
       for(j=1; j<=m; j++)
       {
           t++ ;
           copie=f[i][j] ;
           ok=1 ;
           if(copie == 1 || copie == 0)
           {
                 ok=0 ;
           }
           else{
                  for(h=2; h*h<=copie; h++)
                  {
                        if(copie % h*h == 0){ok=0; }
                  }
           }
           ok2=1;
           sum=0;
           while(copie != 0)
           {
                 sum+=copie%10 ;
                 copie/=10 ;
           }
           if(sum==1 || sum==0){ok2=0 ; }
           else{
            for(h=2; h*h<=sum; h++)
            {
                  if(sum%h*h==0){ok2=0 ; }
            }
           }
              if(ok == 1)
             {
                 if(i==1 && j==1)
                 {
                     f[i][j]=0;
                 }
                 else{
                    t++ ;
               f[i][j]=0 ;
               if(i > 1){i-- ;}
               if(j > 1){j-- ;}
                 }

             }
           else if(ok2 == 1)
           {
                if(i==n && j==m)
            {
            f[i][j]=0;
            }
            else{
            t++ ;
               f[i][j]=0;
               if(i < n){i++ ;}
               if(j < m){j++ ;}
             }
           }
       }
   }
   cout << t ;
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #1748 Cursă

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1748 Cursă de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!