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

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.
intrare: 10 1
iesire:
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 22
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
problema 608 de pe pbinfo

Răspunsuri la întrebare

Răspuns de stefaniamar
2
yayyy o aveam facuta


#include <iostream>

using namespace std;
int n,k,i,ii,j,g,a[101][101];
int main()
{
    cin>>n>>k;
    for (i=1; i<=n; i++)
    {
        a[i][i]=1;
        g=0;
        ii=i-1;
        while (g<k&&ii>=1)
        {
            a[ii][i]=1;
            ii--;
            g++;
        }
        ii=i+1;
        g=0;
        while (g<k&&ii<=n)
        {
            a[ii][i]=1;
            ii++;
            g++;
        }
    }
    for (i=1; i<=n; i++)
    {
        a[i][n+1-i]=1;
        ii=i-1;
        g=0;
        while (g<k&&ii>=1)
        {
            a[ii][n+1-i]=1;
            g++;
            ii--;
        }
        g=0;
        ii=n+2-i;
        while (g<k&&ii<=n)
        {
            a[i][ii]=1;
            ii++;
            g++;
        }
    }
    for (i=1; i<=n; i++)
        for (j=1; j<=n; j++)
            if (a[i][j]==0)
                a[i][j]=2;
    for (i=1; i<=n; i++)
    {
        for (j=1; j<=n; j++)
            cout<<a[i][j]<<' ';
        cout<<endl;
    }
    return 0;
}
Răspuns de stassahul
3
#include<iostream>

using namespace std;

int n,k;

int main()
{

    cin >> n >> k;

    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
            if(i==j or n-i+1==j) cout << 1 << " ";
                else
                {
                    int nr=1,c=0;
                    while(nr!=k+1)
                    {
                        if(i+nr==j or i-nr==j or n-i+1+nr==j or n-i+1-nr==j)
                        {
                            cout << 1 << " ";
                            c++;
                            break;
                        }
                        nr++;
                    }
                    if(c==0) cout << 2 << " ";
                }
        cout << endl;
    }

    return 0;

}
Alte întrebări interesante