fbpx

Problema #608 – nkX – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Se dau două numere naturale n și k, cu proprietatea că 2*k < n. Să se afişeze pe ecran elementele unei matrice pătratice de dimensiune n, formată din valorile 1 şi 2, construită astfel:

  • valorile de pe diagonala principală sunt 1;
  • valorile de pe k pseudodiagonale paralele cu diagonala principală şi situate imediat deasupra acesteia sunt 1;
  • valorile de pe k pseudodiagonale paralele cu diagonala principală şi situate imediat sub aceasta sunt 1;
  • valorile de pe diagonala secundară sunt 1;
  • valorile de pe k pseudodiagonale paralele cu diagonala secundară şi situate imediat deasupra acesteia sunt 1;
  • valorile de pe k pseudodiagonale paralele cu diagonala secundară şi situate imediat sub aceasta sunt 1;
  • restul valorilor din matrice sunt 2.

Date de intrare

Programul citește de la tastatură numerele n k.

Date de ieșire

Programul va afișa pe ecran matricea construită, câte o linie a matrice pe o linie a ecranului, elementele de pe o line fiind separate prin exact un spaţiu.

Restricții și precizări

  • 1 ≤ n ≤ 100

Exemplu

Intrare

10 1

Ieșire

1 1 2 2 2 2 2 2 1 1 
1 1 1 2 2 2 2 1 1 1 
2 1 1 1 2 2 1 1 1 2 
2 2 1 1 1 1 1 1 2 2 
2 2 2 1 1 1 1 2 2 2 
2 2 2 1 1 1 1 2 2 2 
2 2 1 1 1 1 1 1 2 2 
2 1 1 1 2 2 1 1 1 2 
1 1 1 2 2 2 2 1 1 1 
1 1 2 2 2 2 2 2 1 1
#include<iostream>
using namespace std;

int main()
{
    int a[25][25], n;
    cin>>n;
    for (int i = 1 ; i <= n; i++)
        for (int j = 1; j <= n ; j++) {
            if ((i == j) || ((i + j) == (n + 1))) a[i][j] = 0;
            else if ((i < j) && (i + j)<(n + 1)) a[i][j] = 1;
                else if ((i > j) && (i + j)>(n + 1)) a[i][j] = 2;
                    else a[i][j] = 3;
        }
    for (int i = 1 ; i <= n ; i++)
    {
        for (int j = 1; j <= n ; j++)
            cout << a[i][j] << " ";
        cout << endl;
    }
    return 0;
}
Comentarii

S-ar putea sa iti placa