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
Răspunsuri la întrebare
Răspuns:
#include<iostream>
using namespace std;
int main(){
int n, k, v[101][101],i,j;
cin>>n>>k;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
if(i==j || j==n-i+1){
v[i][j] = 1;
}
else{
int nr=1,c=0;
while(nr!=k+1){
if(j==i+nr || j==i-nr || j==n-i+1+nr || j==n-i+1-nr){
v[i][j] = 1;
c++;
break;
}
nr++;
}
if(c==0){
v[i][j] = 2;
}
}
}
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
cout<<v[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
else a[i][j]=2;