Sunteți pe pagina 1din 7

PROF. ING.

EUGENU DRĂGOESCU–COLEGIUL NAŢIONAL “VICTOR BABEŞ”–2017-2018–CLASA a-X-a E


Probleme rezolvate 5

1. Numar cu exact k divizori.


Se citeşte de la tastatură un număr natural k (1≤k≤50). Să se determine cel mai mic
număr natural care are exact k divizori.
Exemplu:
5 – 16

#include<iostream>
#include<math.h>
using namespace std;

int k;
int nrdiv(long x)
{
long d;
int nr=0;
for(d=1;d<=sqrt(x);d++)
if(x%d==0)
nr+=2;
if(sqrt(x)==(int)sqrt(x))
nr--;
return nr;
}

void main()
{
int i,n;
cin>>k;
n=1;
while(nrdiv(n)!=k)
++n;
cout<<n;
}

2. Matrice patrat magic.


Se citeşte din fişierul “mat.in”, de pe prima linie, un număr natural n (1≤n≤50) şi de pe
următoarele n linii o matrice pătratică de numere întregi, de maxim 9 cifre. Să se
verifice dacă matricea este pătrat magic (sumele elementelor pe linii, coloane şi de pe
cele două diagonale, este aceeaşi).
Exemplu:
mat.in
3 DA
Pagina 1 din 7
PROF. ING. EUGENU DRĂGOESCU–COLEGIUL NAŢIONAL “VICTOR BABEŞ”–2017-2018–CLASA a-X-a E
4 3 8
9 5 1
2 7 6

#include<iostream>
#include<fstream>
using namespace std;

long a[51][51];
int n;

void citire()
{
ifstream fin("mat.in");
fin>>n;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
f>>a[i][j];
f.close();
}

int magie()
{
int i,j;
long S1=0,S2=0;
for(i=1;i<=n;++i)
{
S1=S1+a[i][i];
S2=S2+a[i][n-i+1];
}
if(S1!=S2)
return 0;
for(i=1;i<=n;++i)
{
S2=0;S3=0;
for(j=1;j<=n;++j)
{
S2=S2+a[i][j];
S3=S3+a[j][i];
}
if(S2!=S1||S3!=S1)
return 0;
}
return 1;
Pagina 2 din 7
PROF. ING. EUGENU DRĂGOESCU–COLEGIUL NAŢIONAL “VICTOR BABEŞ”–2017-2018–CLASA a-X-a E
}
void main()
{
citire();
if(magie())
cout<<"DA";
else
cout<<"NU";
}

3. Elemente sub diagonala principală.


Se citeşte din fişierul “mat.in”, de pe prima linie, un număr natural n (1≤n≤50), şi de pe
următoarele n linii o matrice pătratică ce conţine numere naturale de maxim 4 cifre. Să
se numere elementele cu număr par de cifre aflate în triunghiul de sub diagonala
principală a matricei şi să se afişeze rezultatul pe ecran.
Exemplu:
mat.in
4
1 4 12 3
13 3 22 5
14 22 2 34
222 11 3 31

#include<iostream>
#include<fstream>
using namespace std;

int a[51][51];
int n;

void citire()
{
ifstream f("mat.in");
fin>>n;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
f>>a[i][j];
f.close();
}

int nrcif(int x)
{
Pagina 3 din 7
PROF. ING. EUGENU DRĂGOESCU–COLEGIUL NAŢIONAL “VICTOR BABEŞ”–2017-2018–CLASA a-X-a E
int nr=0;
if(x==0)
return 1;
while(x>0)
{
x/=10;
++nr;
}
return nr;
}
int rez(){
int nr=0;
for(int i=2;i<=n;++i)
for(int j=1;j<i;++j)
if(nrcif(a[i][j])%2==0)
++nr;
return nr;
}

void main()
{
citire();
cout<<rez();
}

4. Suma numere prime de deaspura diagonalei principale.


Se citeşte din fişierul “mat.in”, de pe prima linie, un număr natural n (1≤n≤50), şi de pe
următoarele n linii o matrice pătratică ce conţine numere naturale de maxim 4 cifre. Să
se calculeze suma elementelor prime aflate în triunghiul de deasupra diagonalei
principale a matricei şi să se afişeze rezultatul pe ecran.
Exemplu:
mat.in
4
1 4 12 3
13 3 22 5
14 22 2 34
222 11 3 31

#include<iostream>
#include<fstream>
using namespace std;

Pagina 4 din 7
PROF. ING. EUGENU DRĂGOESCU–COLEGIUL NAŢIONAL “VICTOR BABEŞ”–2017-2018–CLASA a-X-a E
int a[51][51];
int n;

void citire()
{
ifstream f("mat.in");
f>>n;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
f>>a[i][j];
f.close();
}

int nrcif(int x)
{
int nr=0;
if(x==0)
return 1;
while(x>0)
{
x/=10;
++nr;
}
return nr;
}

int prim(int x)
{
if(x<2)
return 0;
for(int d=2;d<=sqrt(x);++d)
if(x%d==0)
return 0;
return 1;
}

int rez()
{
int nr=0;
for(int i=1;i<n;++i)
for(int j=i+1;j<=n;++j)
if(prim(a[i][j]))
++nr;
return nr;
Pagina 5 din 7
PROF. ING. EUGENU DRĂGOESCU–COLEGIUL NAŢIONAL “VICTOR BABEŞ”–2017-2018–CLASA a-X-a E
}

void main()
{
citire();
cout<<rez();
}

5. Suma cifrelor pare de sub diagonalei secundara.


Se citeşte din fişierul “mat.in”, de pe prima linie, un număr natural n (1≤n≤50), şi de pe
următoarele n linii o matrice pătratică ce conţine numere naturale de maxim 4 cifre. Să
se verifice dacă există elemente cu suma cifrelor pară în triunghiul de sub diagonala
secundară a matricei şi să se afişeze rezultatul pe ecran.
Exemplu:
mat.in
4
7 11 5 8
9 5 1 12
3 4 31 15
3 2 23 14

DA

#include<iostream>
#include<fstream>

using namespace std;

int a[51][51];
int n;

void citire()
{
ifstream f("mat.in");
f>>n;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
f>>a[i][j];
f.close();
}

int sumcif(int x)
{
int s=0;
Pagina 6 din 7
PROF. ING. EUGENU DRĂGOESCU–COLEGIUL NAŢIONAL “VICTOR BABEŞ”–2017-2018–CLASA a-X-a E
while(x>0)
{
s+=x%10;
x/=10;
}
return s;
}

int verif()
{
for(int i=2;i<=n;++i)
for(int j=n-i+2;j<=n;++j)
if(sumcif(a[i][j])%2==0)
return 1;
return 0;
}

void main()
{
citire();
if(verif())
cout<<"DA";
else
cout<<"NU";
}

Pagina 7 din 7

S-ar putea să vă placă și