👤

Se consideră o matrice pătratică cu n linii şi n coloane (1≤n≤30), ce memorează numere întregi nenule de cel mult două cifre fiecare. Scrieţi un program C/C++ care citeşte de la tastatură valoarea n şi elementele matricei şi care afişează pe ecran ultima cifră a produsului acelor elemente de pe diagonala secundară care au proprietatea că
sunt valori minime pe coloanele lor. Dacă nu există astfel de elemente în matrice, se va afişa mesajul NU EXISTA.
Exemplu: pentru n=4 şi matricea alăturată se va afişa pe ecran valoarea 1 (3*7=21).



Răspuns :

#include<iostream>
using namespace std;
int v[31][31],n,minim,p;
bool ok;
int main()
{
//se citeste si si matricea

cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>v[i][j];

//se initializeaza produsul
p=1;
//se initializeaza o variabila logica care verifica daca exista elemente care indeplinesc conditia data
ok=false;

for(int i=1;i<=n;i++){  
//se calculeaza minimul pe fiecare coloana

minim=v[1][i];

for(int j=1;j<=n;j++)
    if(v[j][i]<minim)
          minim=v[j][i];

//daca minimul se afla pe diagonala secundara, inmultim ultima cifra a sa la produs

if(minim==v[n-i+1][i]){
   ok=true;
   p=p*(minim%10);
   }
}
if(ok==true)
cout<<p%10;
else cout<<"NU EXISTA";

return 0;
}


#include <bits/stdc++.h>
using namespace std;

int v[31][31], n, p = 1, ok;

int mincol(int col)
{
    int sol = INT_MAX;
    for(int i = 1; i <= n; i++)
        sol = min(sol, v[col][i]);
    return sol;
}

int main()
{
    cin >> n;
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= n; j++)
            cin >> v[i][j];

    for(int i = 1; i <= n; i++)
        if(v[i][n - i + 1] == mincol(i))
            p *= v[i][n - i + 1], ok = 1;

    if(ok) cout << p % 10;
    else cout << "NU EXISTA";
    return 0;
}