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
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;
}
#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
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;
}
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
Biologie,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă