Sunteți pe pagina 1din 82

Pentru urmatoarele problem datele de intrare sunt naturale de maxim 9 cifre (daca cerinta nu precizeaza altfel)

1. Se citeste un numar n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza suma numerelor din sir.
2. Se citeste un numar n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza produsul numerelor din sir.
3. Se citeste un numar n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza cel mai mare numar din sir.
4. Se citeste un numar n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza cel mai mic numar din sir.
5. Se citeste un numar n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza cate numere din sir sunt pozitive.
6. Se citeste un numar n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza produsul numerelor impare din sir.
7. Se citeste un numar n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza cel mai mare numar din sir si de cate ori apare el in sir.
8. Se citeste un numar n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza media aritmetica a numerelor din sir
9. Se citesc 2 nr k si n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza nr din sir care au k cifre.
10. Se citeste un numar n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza numerele ce au cel putin o cifra de 0. Daca nu exista astfel de numere se afiseaza “nu exista”
11. Se citeste un numar n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza media aritmetica a numerelor pozitive din sir.
12. Se citeste un numar n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza lungimea celei mai lungi secvente de numere pozitive din sir.
13. Se citeste un numar n (1<=n<=50).Sa se scrie un program care afiseaza sirul :
1, 2,2, 3,3,3, 4,4,4,4, 5,5,5,5,5 ,………, n,n,n,n,…..,n.
14. Se citeste un numar n (1<=n<=50).Sa se scrie un program care afiseaza sirul :
1, 1,2, 1,2,3, 1,2,3,4, 1,2,3,4,5 ,………, 1,2,3,4,…..,n.
15. Se citeste un numar n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza numerele palindrom din sir.
16. Se citeste un numar n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza cate numere palindrom sunt in sir.
17. Se citeste un numar n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza numerele perfecte din sir.
18. Se citeste un numar n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza numerele prime din sir.
19. Se citeste un numar n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza numarul facut din cea mai mare cifra a fiecarui numar prim din sir.
20. Se citeste un numar n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza maximul inverselor numerelor din sir.
21. Se citeste un numar n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza “cifra de control “ a fiecarui numar din sir (“cifra de control a unui numar “ este obtinuta astfel: se face
suma cifrelor, apoi suma cifrelor sumei obtinute s.a.m.d pana cand se obtine un numar<10).
22. Se citeste un numar n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza minimul “cifrelor de control “ a numerelor din sir (“cifra de control a unui numar “ este obtinuta astfel: se
face suma cifrelor, apoi suma cifrelor sumei obtinute s.a.m.d pana cand se obtine un numar<10).
23. Se citeste un numar n (1<=n<=50) , un numar intreg x si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie
un program care afiseaza de cate ori apare x in sir.
24. Se citeste un numar n (1<=n<=50) , 2 numere intregi de maxim 9 cifre a si b si apoi un sir de n numere intregi de
maxim 9 cifre.Sa se scrie un program care afiseaza media aritmetica a numerelor din sir ce apartin intervalului
[a,b];
25. Se citeste un numar n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza, pentru fiecare numar suma divizorilor sai.
26. Se citeste un numar n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza, pentru fiecare numar, cel mai mic divizor prim al lui.
27. Se citeste un numar n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza suma tuturor divizorilor comuni ai tuturor numerelor din sir.
28. Se citeste un numar n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza, pentru fiecare numar x din sir cel mai apropiat numar de x , numit y cu proprietatea ca x si y sunt prime
intre ele.
29. Se citeste un numar n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza cmmdc-ul tuturor numerelor din sir.
30. Se citeste un numar n (1<=n<=50).Sa se scrie un program care afiseaza numerele prime mai mici sau egale cu n.
31. Se citeste un numar n (1<=n<=50).Sa se scrie un program care afiseaza cel mai mare numar prim mai mic sau
egal cu n.
32. Se citeste un numar n (1<=n<=50) si.Sa se scrie un program care afiseaza cel mai mic numar prim mai mare sau
egal cu n.
33. Sa se gaseasca numerele de 2 cifre care au proprietatea: rasturnatul patratului numarului este egal cu patratul
numarului rasturnat. (132=169, 312=961);
34. Se citeste un numar n (1<=n<=50) si apoi un sir de n numere intregi de maxim 9 cifre.Sa se scrie un program care
afiseaza cel mai mare numar din sir care e prim si mai mic sau egal cu n.
35. Se citesc 2 numere intregi de maxim 9 cifre n si b. Sa se verifice daca n poate fi considerat scris in baza b (are
toate cifrele mai mici ca b).
36. Se citesc 2 numere intregi de maxim 9 cifre a si b.Sa se afiseze cifrele lor comune.
37. Se citeste un numar n (1<=n<=7) .Sa se scrie un program care afiseaza n! (n!=1*2*3*4*5*…..*n)
38. Se citeste un numar n (1<=n<=50).Sa se afiseaza 2 n.
39. Se citeste un numar n (1<=n<=50).Sa se verifice daca are cifre distincte.
40. Sa se afiseze toate numerele de 3 cifre care au toate cifrele distincte.
41. Se citeste un sir de numere intregi de maxim 9 cifre pana la intalnirea lui 0 ( 0 nu face parte din sir).Sa se afiseze
cate numere au fost citite.

12345670

-1 -5 -40 0
3

#include <iostream>
using namespace std;
int main()
{
int x, contor;
while ( (cin >> x) && x!=0 )
contor++;
cout << contor;
return 0;
}

42. Se citeste un sir de numere intregi de maxim 9 cifre pana la intalnirea lui 0 ( 0 nu face parte din sir).Sa se afiseze
suma numerelor din sir.

12345670

28

1 -1 -5 -40 0

-45

#include <iostream>

using namespace std;

int main()

int x, Suma=0;

while ( (cin >> x) && x!=0 )

Suma = Suma + x;

cout << Suma;

return 0;

43. Se citeste un sir de numere intregi de maxim 9 cifre pana la intalnirea lui 0 ( 0 nu face parte din sir).Sa se afiseze
produsul numerelor din sir.

12345670

5040

-1 -5 -40 0

-200

#include <iostream>

using namespace std;

int main()
{

int x, Produs=1;

while ( (cin >> x) && x!=0 )

Produs = Produs * x;

cout << Produs;

return 0;

Ver 2

#include <iostream>
using namespace std;
int main()
{
  int x, p=1;
   cin >> x;
   while (x!=0)
   {
     p=p*x;
     cin >> x;
   }
   cout << p;
   return 0;
}

44. Se citeste un sir de numere intregi de maxim 9 cifre pana la intalnirea lui 0 ( 0 nu face parte din sir).Sa se afiseze
cel mai mare numar din sir.

-1 -5 -40 0

-1

12345670

7
#include <iostream>

using namespace std;

int main()

int x, y, Nr_max;

cin >> x;

Nr_max = x;

while ( (cin >> y) && y!=0 )

if ( y > Nr_max)

Nr_max = y;

cout << Nr_max;

return 0;

45. Se citeste un sir de numere intregi de maxim 9 cifre pana la intalnirea lui 0 ( 0 nu face parte din sir).Sa se afiseze
cel mai mic numar din sir .

-1 -5 -40 0

-40

112345670

#include <iostream>

using namespace std;

int main()

int x, y, Nr_min;

cin >> x;

Nr_min = x;

while ( (cin >> y) && y!=0 )

if ( y < Nr_min)
Nr_min = y;

cout << Nr_min;

return 0;

46. Se citeste un sir de numere intregi de maxim 9 cifre pana la intalnirea lui 0 ( 0 nu face parte din sir).Sa se afiseze
inversul celui mai mic numar din sir.

1 4 -23 32 -45 0

-54

#include <iostream>

using namespace std;

int main()

int x, y, Nr_min, cNr_min, cif, Ogl_Nr_min=0;

cin >> x;

Nr_min = x;

while ( (cin >> y) && y!=0 )

if ( y < Nr_min)

Nr_min = y;

while (Nr_min!=0)

cif = Nr_min%10;

Ogl_Nr_min = Ogl_Nr_min * 10 + Nr_min%10;

Nr_min = Nr_min/10;

cout << Ogl_Nr_min;

return 0;

}
47. Se citeste un sir de numere intregi de maxim 9 cifre pana la intalnirea lui 0 ( 0 nu face parte din sir).Sa se afiseze
toate perechile de numere alaturate din sir ( de pe pozitii consecutive) care sunt ambele impare.

-33 55 77 21 8 414 79 91 0

-33 55

55 77

77 21

79 91

#include <iostream>

using namespace std;

int main()

int x, y;

cin >> x;

while (cin >> y && y!=0)

if (x%2!=0 && y%2!=0)

cout << x << " " << y << endl;

x = y;

return 0;

48. Se citeste un sir de numere intregi de maxim 9 cifre pana la intalnirea lui 0 ( 0 nu face parte din sir).Sa se afiseze
numerele prime din sir.
-33 55 77 21 8 414 79 91 -5 81 7 0
1 33 3 11 Nr divizori NATURALI pt -33 este 4
1 55 5 11 Nr divizori NATURALI pt 55 este 4
1 77 7 11 Nr divizori NATURALI pt 77 este 4
1 21 3 7 Nr divizori NATURALI pt 21 este 4
1 8 2 4 Nr divizori NATURALI pt 8 este 4
1 414 2 207 3 138 6 69 9 46 18 23 Nr divizori NATURALI pt 414 este 12
1 79 Nr divizori NATURALI pt 79 este 2
Nr 79 este prim
1 91 7 13 Nr divizori NATURALI pt 91 este 4
1 5 Nr divizori NATURALI pt -5 este 2
Nr -5 este prim
1 81 3 27 9 Nr divizori NATURALI pt 81 este 5
1 7 Nr divizori NATURALI pt 7 este 2
Nr 7 este prim

#include <iostream>
using namespace std;
int main()
{
int x, cnt=0, div, d;
while (cin >> x && x!=0)
{
cnt = 0;
for (d = 1; d*d <=abs(x); d++)
{
if (x%d==0)
{
//cout << d << " ";
cnt = cnt + 1;
if (d*d <abs(x))
{
div = abs(x)/d;
cnt = cnt + 1;
//cout << div << " ";
}
}
}
//cout << "Nr divizori NATURALI pt " << x << " este " << cnt << endl;
if (cnt==2)
{
cout << " Nr " << x << " este prim" << endl;
}

}
return 0;
}

-33 55 77 21 8 414 79 91 -5 81 7 0
Nr 79 este prim
Nr -5 este prim
Nr 7 este prim
49. Se citeste un sir de numere intregi de maxim 9 cifre pana la intalnirea lui 0 ( 0 nu face parte din sir) si in numar
x.Sa se afiseze toate numelere din sir care sunt mai mici sau egale cu x.

In: 10
-33 55 77 21 8 414 79 91 -5 81 7 0
Out: -33 8 -5 7

#include <iostream>
using namespace std;
int main()
{
int x, y;
cin >> x;
while (cin >> y && y!=0)
{
if (y <=x)
cout << y << " ";
}
return 0;
}

50. Se citeste un sir de numere intregi de maxim 9 cifre pana la intalnirea lui 0 ( 0 nu face parte din sir).Sa se afiseze
media aritmetica a numerelor cuprinse in intervalul [a,b] (a si b sunt 2 numere intregi de maxim 9 cifre)

-33 33

7 -12 21 36 89 -23 -33 33 57 0

7 -12 21 -23 -33 33 -7 6 -1.16667 -1.17

-33 33

7 -21 21 31 89 -23 -33 33 57 0

7 -21 21 31 -23 -33 33 15 7 2.14286

#include <iostream>

#include <iomanip>

using namespace std;

int main()

int a, b, x, k=0, Suma =0;

double ma = 0;
cin >> a >> b;

while (cin >> x && x!=0)

if (x >=a && x <=b)

Suma = Suma + x;

k = k + 1;

cout << x << " ";

cout << Suma << " " << k << " ";

ma = (double)Suma/k;

cout << ma << " ";

cout << fixed << setprecision(2) << ma;

return 0;

Punem comment la cateva afisari

-33 33

7 -21 21 31 89 -23 -33 33 57 0

2.14286

#include <iostream>

#include <iomanip>

using namespace std;

int main()

int a, b, x, k=0, Suma =0;

double ma = 0;
cin >> a >> b;

while (cin >> x && x!=0)

if (x >=a && x <=b)

Suma = Suma + x;

k = k + 1;

//cout << x << " ";

//cout << Suma << " " << k << " ";

ma = (double)Suma/k;

cout << ma << " ";

//cout << fixed << setprecision(2) << ma;

return 0;

51. Se citeste un sir de numere intregi de maxim 9 cifre pana la intalnirea lui 0 ( 0 nu face parte din sir).Sa se afiseze,
pentru fiecare numar din sir cel mai apropiat numar par mai mic decat numarul respectiv.

7 -21 21 31 89 -23 -33 33 57 -34 34 0

6 -22 20 30 88 -24 -34 32 56 -36 32

#include <iostream>

using namespace std;

int main()

int x;

while (cin >> x && x!=0)

if (x%2==0)
x = x - 2;

else

x = x - 1;

cout << x << " ";

return 0;

52. Se citeste un sir de numere intregi de maxim 9 cifre pana la intalnirea lui 0 ( 0 nu face parte din sir).Sa se afiseze
toate numerele care au toate cifrele pare.

-24 46 54 62 89 449 284 -842 0

-24 46 62 284 -842

#include <iostream>

using namespace std;

int main()

int x, cx, cif;

bool toate_pare;

while (cin >> x && x!=0)

cx = x;

toate_pare = true;

do

cif = cx%10;

if (cif%2!=0)

toate_pare = false;

break;
}

cx = cx/10;

while (cx!=0 && toate_pare == true );

if (toate_pare == true)

cout << x << " ";

return 0;

53. Se citeste un sir de numere intregi de maxim 9 cifre pana la intalnirea lui 0 ( 0 nu face parte din sir).Sa se afiseze
numerele din sir care apartin sirului lui Fibonacci.

Șirul lui Fibonacci


Numerele Fibonacci sunt numere naturale care fac parte din următorul șir, în care fiecare număr este
egal cu suma celor două de dinainte:

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …

7 2 1 3 1 5 6 2 7 3 4 5 8 21 13 43 21 34 55 59 89 90 91 144 0

IN: 7 2 1 3 1 5 6 2 7 3 4 5 8 21 13 43 21 34 55 59 89 90 91 144 0

OUT: 1 1 2 3 5 8 13 21 34 55 89 144

#include <iostream>

using namespace std;

int main()

int x, y, z;

while (cin >> x )

if (x==1)

cout << x << " ";

break;
}

while (cin >> y)

if (y==1)

cout << y << " ";

break;

while (cin >> z && z!=0)

if (x + y == z)

cout << z << " ";

x = y;

y = z;

return 0;

54. Se citeste un numar intreg n de maxim 8 cifre.Sa se afiseze cifrele sale.

12345678

12345678

-87654321
87654321

#include <iostream>
using namespace std;
int main()
{
int n, cif, Ogl=0;
cin >> n;
n = abs(n);
while (n!=0)
{
cif = n%10;
Ogl = Ogl*10 + cif;
n = n/10;
}
while (Ogl!=0)
{
cif = Ogl%10;
cout << cif << " ";
Ogl = Ogl/10;
}
return 0;
}

55. Se citeste un numar intreg n de maxim 8 cifre.Sa se afiseze prima cifra a lui n.

12345678

87654321

-87654321

#include <iostream>

using namespace std;

int main()

int n;

cin >> n;

n = abs(n);

while (n>9)

n = n/10;
}

cout << n;

return 0;

56. Se citeste un numar intreg n de maxim 8 cifre.Sa se afiseze suma cifrelor lui n.

87654321

36

-87654321

36

#include <iostream>

using namespace std;

int main()

int n, cif, Suma=0;

cin >> n;

n = abs(n);

while (n!=0)

cif = n%10;

Suma = Suma + cif;

n = n/10;

cout << Suma;

return 0;

}
57. Se citeste un numar intreg n de maxim 8 cifre.Sa se afiseze produsul cifrelor lui n.

87654321

40320 (este 8 factorial notat 8!)

-87654321

40320

#include <iostream>

using namespace std;

int main()

int n, cif, Produs=1;

cin >> n;

n = abs(n);

while (n!=0)

cif = n%10;

Produs = Produs * cif;

n = n/10;

cout << Produs;

return 0;

58. Se citeste un numar intreg n de maxim 8 cifre.Sa se afiseze cea mai mare cifra a lui n.

-12345678

-13745757

#include <iostream>

using namespace std;


int main()

int n, cif, cif_max=-1;

cin >> n;

n = abs(n);

while (n!=0)

cif = n%10;

if (cif > cif_max)

cif_max = cif;

n = n/10;

cout << cif_max;

return 0;

59. Se citeste un numar intreg n de maxim 8 cifre.Sa se afiseze cea mai mica cifra a lui n.

-13745757

#include <iostream>

using namespace std;

int main()

int n, cif, cif_min=10;

cin >> n;

n = abs(n);

while (n!=0)

cif = n%10;
if (cif < cif_min)

cif_min = cif;

n = n/10;

cout << cif_min;

return 0;

60. Se citeste un numar intreg n de maxim 8 cifre.Sa se afiseze cate cifre are n.

-13745757

#include <iostream>

using namespace std;

int main()

int n, nr_cifre=0;

cin >> n;

n = abs(n);

while (n!=0)

nr_cifre = nr_cifre + 1;

n = n/10;

cout << nr_cifre;

return 0;

}
61. Se citeste un numar intreg n de maxim 8 cifre.Sa se afiseze cifrele pare ale lui n.

-24518740

04842

#include <iostream>

using namespace std;

int main()

int n, cif;

cin >> n;

n = abs(n);

while (n!=0)

cif = n%10;

if (cif%2==0)

cout << cif << " ";

n = n/10;

return 0;

62. Se citeste un numar intreg n de maxim 8 cifre.Sa se afiseze media aritmetica a cifrelor lui n.

-12345678

4.5

#include <iostream>

using namespace std;

int main()

int n, cif, Suma=0, nr=0;


double ma;

cin >> n;

n = abs(n);

while (n!=0)

cif = n%10;

Suma = Suma + cif;

nr = nr + 1;

n = n/10;

ma = (double)Suma/nr;

cout << ma;

return 0;

63. Se citeste un numar intreg n de maxim 8 cifre.Sa se afiseze inversul lui n.

-12345678
-87654321

#include <iostream>
using namespace std;
int main()
{
int n, cif, Ogl=0;
cin >> n;
while (n!=0)
{
cif = n%10;
Ogl = Ogl*10 + cif;
n = n/10;
}
cout << Ogl;
return 0;
}

64. Se citeste un numar intreg n de maxim 8 cifre.Sa se verifice daca n este palindrom ( un numar n este palindrome
daca este egal cu inversul sau.
-2020

-2020 nu este palindrom

-2002

-2002 este palindrom

#include <iostream>

using namespace std;

int main()

int n, cn, cif, Ogl=0;

cin >> n;

cn = n;

while (cn!=0)

cif = cn%10;

Ogl = Ogl*10 + cif;

cn = cn/10;

if (n==Ogl)

cout << n << " este palindrom";

else

cout << n << " nu este palindrom";

return 0;

65. Se citeste un numar intreg n de maxim 8 cifre.Sa se afiseze un numar format din cifrele pare ale lui n.

-12345678

-2468
#include <iostream>

using namespace std;

int main()

int n, cn, cif, Rec_nr=0, p=1;

cin >> n;

cn = n;

while (cn!=0)

cif = cn%10;

if (cif%2==0)

Rec_nr = Rec_nr + p*cif;

p = p*10;

cn = cn/10;

cout << Rec_nr;

return 0;

66. Se citeste un numar intreg n de maxim 8 cifre.Sa se afiseze cifrele lui n care sunt distincte.

-23409987

0234789

#include <iostream>

using namespace std;

int main()

int n, cn, cif, i=0;


cin >> n;

n = abs(n);

while (i<=9)

cn = n;

while (cn!=0)

cif = cn%10;

if (cif==i)

cout << i << " ";

break;

cn = cn/10;

i = i + 1;

return 0;

67. Se citeste un numar intreg n de maxim 8 cifre.Sa se afiseze cifrele lui n in ordine crescatoare. ( daca o cifra apare de
mai multe ori, ea va fi afisata o singura data.)

-23409987

0234789

#include <iostream>

using namespace std;

int main()

int n, cn, cif, i=0;


cin >> n;

n = abs(n);

while (i<=9)

cn = n;

while (cn!=0)

cif = cn%10;

if (cif==i)

cout << i << " ";

break;

cn = cn/10;

i = i + 1;

return 0;

Sa se afiseze cifrele lui n in ordine descrescatoare.

-23409987
9874320

#include <iostream>
using namespace std;
int main()
{
int n, cn, cif, i=9;
cin >> n;
n = abs(n);
while (i>=0)
{
cn = n;
while (cn!=0)
{
cif = cn%10;
if (cif==i)
{
cout << i << " ";
break;
}
cn = cn/10;
}
i = i - 1;
}
return 0;
}
68. Se citeste un numar intreg n de maxim 8 cifre.n are toate cifrele distincte.Sa se afiseze cel mai mare numar format
din cifrele lui n.

23409187

01234789

98743210

#include <iostream>

using namespace std;

int main()

int n, cn, cif, i=0, p=1, Rec_nr=0;

cin >> n;

n = abs(n);

while (i<=9)

cn = n;

while (cn!=0)

cif = cn%10;

if (cif==i)

cout << i << " ";

Rec_nr = Rec_nr + p*i;


p = p*10;

break;

cn = cn/10;

i = i + 1;

cout << endl << Rec_nr;

return 0;

69. Se citeste un numar intreg n de maxim 8 cifre.Sa se afiseze cel mai mare numar format din cifrele lui n.

-77889991

17788999

99988771

#include <iostream>

using namespace std;

int main()

int n, cn, cif, i=0, p=1, Rec_nr=0;

cin >> n;

n = abs(n);

while (i<=9)

cn = n;

while (cn!=0)

cif = cn%10;
if (cif==i)

cout << i << " ";

Rec_nr = Rec_nr + p*i;

p = p*10;

cn = cn/10;

i = i + 1;

cout << endl << Rec_nr;

return 0;

70. Se citeste un numar intreg n de maxim 8 cifre si o cifra x.Sa se afiseze de cate ori apare cifra x in scrierea lui n.

-77889991 9

-77889991 0

#include <iostream>

using namespace std;

int main()

int n, cif, x, cnt_cif=0;

cin >> n >> x;

n = abs(n);

while (n!=0)

cif = n%10;
if (cif==x)

cnt_cif = cnt_cif + 1;

n = n/10;

cout << cnt_cif ;

return 0;

71. Se citeste un numar intreg n de maxim 8 cifre.Sa se afiseze toate numerele obtinute prin permutarea circulara la
stanga numarului n( de ex. Pt n=1234 se va afisa: 1234, 4123, 3412, 2341).

!!! GRESIT: EXEMPLUL DIN PARANTEZE DEMONSTREAZA O PERMUTARE LA DREAPTA, DEOARECE BLOCUL DE 3
NUMERE SE MUTA INSPRE DREAPTA CU O POZITIE

CODUL DE MAI JOS REALIZEAZA PERMUTAREA LA STANGA, CUM SE SOLICITA IN ENUNT:

IN: 1234
OUT : 1234
2341
3412
4123

IN: -1234
OUT : -1234
-2341
-3412
-4123

#include <iostream>

using namespace std;

int main() // rezolvare in care apare si un for

int n, cn, nr_cif=0, pr_cif, p=1;


cin >> n;

cn = n;

while (cn!=0)

nr_cif = nr_cif + 1;

cn = cn/10;

cn = n;

while (abs(cn)>9)

p = p*10;

cn = cn/10;

cout << n << endl;

for (int i=1; i< nr_cif; i++)

cn = n;

while (abs(cn)>9) // peste tot unde apare abs(cn) este pentru a putea prelucra si numere intregi negative

cn = cn/10;

pr_cif = cn;

n = n%p*10 + pr_cif; // Am facut permutare la stanga;

cout << n << endl;

return 0;

}
IN: 1234
OUT : 1234
2341
3412
4123

IN: -1234
OUT : -1234
-2341
-3412
-4123

#include <iostream>

using namespace std;

int main() // rezolvare in care for e inlocuit cu while

int n, cn, nr_cif=0, pr_cif, p=1, i=1;

cin >> n;

cn = n;

while (cn!=0)

nr_cif = nr_cif + 1;

cn = cn/10;

cn = n;

while (abs(cn)>9) // // peste tot unde apare abs(cn) este pentru a putea prelucra si numere intregi negative

p = p*10;

cn = cn/10;

cout << n << endl;

while (i< nr_cif)

{
cn = n;

while (abs(cn)>9)

cn = cn/10;

pr_cif = cn;

n = n%p*10 + pr_cif; // Am facut permutare la stanga;

cout << n << endl;

i = i + 1;

return 0;

72. Se citeste un numar intreg n de maxim 8 cifre.Sa se afiseze numerele obtinute prin permutarea circulara pe
dreapta a cifrelor lui n.

permutare circulara la dreapta

IN: 1234

OUT : 1234

4123

3412

2341

IN: -1234

OUT : -1234

-4123

-3412

-2341
#include <iostream>

using namespace std;

int main()

int n, cn, nr_cif=0, cif, p=1, i=1;

cin >> n;

cn = n;

while (cn!=0)

nr_cif = nr_cif + 1;

cn = cn/10;

cn = n;

while (abs(cn)>9) // peste tot unde apare abs(cn) este pentru a putea prelucra si numere intregi negative

p = p*10;

cn = cn/10;

cout << n << endl;

while (i < nr_cif)

cif = n%10;

n = cif*p + n/10; // Am facut permutare la dreapta;

cout << n << endl;

i = i + 1;

return 0;

}
73. Se citeste un numar intreg n de maxim 8 cifre.Sa se verifice daca este extra prim.Un numar este extra prim daca el
si numerele obtinute prin permutarea circulare la dreapta a cifrelor lui sunt prime.

IN: -1234
OUT:
-4123
1 4123 7 589 19 217 31 133

-1234 nu este numar extra prim

IN: 113
OUT:
311
1 311
131
1 131
113
1 113

113 este numar extra prim

IN: -113

OUT:

-311

1 311

-131

1 131

-113

1 113

-113 este numar extra prim

#include <iostream>

using namespace std;

int main()

int n, cn, nr_cif=0, cif, p=1, i=1, cnt;

bool extra_prim = true;


cin >> n;

cn = n;

while (cn!=0)

nr_cif = nr_cif + 1;

cn = cn/10;

cn = n;

while (abs(cn)>9) // peste tot unde apare abs(cn) este pentru a putea prelucra si numere intregi negative

p = p*10;

cn = cn/10;

cn = n;

while (i <= nr_cif)

cif = n%10;

n = cif*p + n/10; // Am facut permutare la dreapta;

cout << n << endl;

cnt = 0;

for (int d=1; d*d <= abs(n); d++)

if (n%d==0)

cnt = cnt + 1;

cout << d << " ";

if (d*d < abs(n))

cout << abs(n)/d << " ";


cnt = cnt + 1;

cout << endl;

if (cnt!=2)

extra_prim = false;

break;

i = i + 1;

if (extra_prim == true)

cout << endl << cn << " este numar extra prim";

else

cout << endl << cn << " nu este numar extra prim";

return 0;

74. Se citeste un numar intreg n de maxim 8 cifre.Sa se verifice daca este superprim. Un numar este superprim daca
atat el cat si inversul sau sunt prime.

IN: -17

OUT:

-17

1 17

-71

1 71

-17 este numar super prim


IN: -73

OUT:

-73

1 73

-37

1 37

-73 este numar super prim

IN: 113

OUT:

113

1 113

311

1 311

113 este numar super prim

IN: -513

OUT:

-513

1 513 3 171 9 57 19 27

-315

1 315 3 105 5 63 7 45 9 35 15 21

-513 nu este numar super prim

#include <iostream>

using namespace std;

int main()

int n, cn, cif, Ogl=0, cnt;

bool super_prim = true;


cin >> n;

cn = n;

while (cn!=0)

cif = cn%10;

Ogl = Ogl*10 + cif;

cn = cn/10;

cout << n << endl;

cnt = 0;

for (int d=1; d*d <= abs(n); d++)

if (n%d==0)

cnt = cnt + 1;

cout << d << " ";

if (d*d < abs(n))

cout << abs(n)/d << " ";

cnt = cnt + 1;

cout << endl;

if (cnt!=2)

super_prim = false;

}
cout << Ogl << endl;

cnt = 0;

for (int d=1; d*d <= abs(Ogl); d++)

if (Ogl%d==0)

cnt = cnt + 1;

cout << d << " ";

if (d*d < abs(Ogl))

cout << abs(Ogl)/d << " ";

cnt = cnt + 1;

cout << endl;

if (cnt!=2)

super_prim = false;

if (super_prim == true)

cout << endl << n << " este numar super prim";

else

cout << endl << n << " nu este numar super prim";

return 0;

}
75. Se citeste un numar intreg n de maxim 8 cifre.Sa se verifice daca n este format numai din cifre distincte.

IN: -23345778

OUT:

3 apare de 2 ori

7 apare de 2 ori

-23345778 nu are cifre distincte

IN: -12345678

OUT:

-12345678 are cifre distinct

#include <iostream>

using namespace std;

int main()

int n, cn, cif, i=0;

bool cifre_dist = true;

cin >> n;

while (i<=9)

cn = abs(n);

int cnt = 0;

while (cn!=0)

cif = cn%10;

if (cif==i)

cnt = cnt + 1;

}
cn = cn/10;

if (cnt>1)

cifre_dist = false;

cout << i << " apare de " << cnt << " ori" << endl;

i = i + 1;

if (cifre_dist == true)

cout << endl << n << " are cifre distincte";

else

cout << endl << n << " nu are cifre distincte";

return 0;

76. Se citeste un numar intreg n de maxim 8 cifre. si 2 cifre a si b.Sa se afiseze media aritmetica a cifrelor lui n care
apartin intervalului [a,b].

IN : -23445889

38

OUT:

Suma cifrelor din interval este 32 iar contorul 6

Media aritmetica este 5.33333

IN : -23445889

OUT:

83

Suma cifrelor din interval este 32 iar contorul 6

Media aritmetica este 5.33333


#include <iostream>

using namespace std;

int main()

int n, cn, a, b, aux, cif, cnt=0, Suma=0;

double ma;

cin >> n >> a >> b;

cn = abs(n);

if (b<a) // trateaza cazul in care a si b nu sunt in ordine crescatoare

aux = a;

a = b;

b = aux;

while (cn!=0)

cif = cn%10;

if (cif>=a && cif<=b)

Suma = Suma + cif;

cnt = cnt + 1;

cn = cn/10;

cout << "Suma cifrelor din interval este " << Suma << " iar contorul " << cnt << endl;

ma = (double) Suma/cnt;

cout << "Media aritmetica este " << ma;

return 0;

}
77. Se citeste un numar intreg n de maxim 4 cifre.Sa se afiseze toti divizorii lui n.

IN: -24

OUT: 1 24 -1 -24 2 12 -2 -12 3 8 -3 -8 4 6 -4 -6

IN: 24

OUT: 1 24 2 12 3 8 4 6

IN: 0

OUT: 0 are un numar infinit de divizori

IN: 25

OUT: 1 25 5

IN: -25

OUT: 1 -1 25 -25 5 -5

#include <iostream>

using namespace std;

int main()

int n;

cin >> n;

if (n==0)

cout << n << " are un numar infinit de divizori";

for (int d=1; d*d<=abs(n); d++)

if (abs(n)%d==0)

cout << d << " ";

if (n<0)

cout << -d << " ";

if (d*d<abs(n))

{
cout << abs(n)/d << " "; // dacă d != sqrt(n)

if (n<0)

cout << -abs(n)/d << " ";

return 0;

78. Se citeste un numar intreg n de maxim 4 cifre.Sa se afiseze suma divizorilor lui n.

IN: 24

OUT: 60

IN: -24

OUT: 0

IN: 25

OUT: 31

IN: -25

OUT: 0

#include <iostream>

using namespace std;

int main()

int n, S=0;

cin >> n;

for (int d=1; d*d<=abs(n); d++)

if (abs(n)%d==0)

{
S = S + d;

if (n<0)

S = S - d;

if (d*d<abs(n))

S = S + abs(n)/d;

if (n<0)

S = S - abs(n)/d;

cout << S;

return 0;

79. Se citeste un numar intreg n de maxim 4 cifre.Sa se afiseze produsul divizorilor lui n.

IN: 6

OUT: 36 1 * 2 * 3 * 6 = 36

IN: -6

OUT: 1296 1 * 2 * 3 * 6 * (-1) * (-2) *(-3)*(-6) = 36*36

IN: 4

OUT: 8 1*2*4=8

IN: -4

OUT: -64 1 * 2 * 4 * (-1) * (-2) *(-4)= -64 = - 8*8

#include <iostream>

using namespace std;


int main()

int n, P=1;

cin >> n;

for (int d=1; d*d<=abs(n); d++)

if (abs(n)%d==0)

P = P * d;

if (n<0)

P = P * (-d);

cout << P;

if (d*d<abs(n))

P = P * abs(n)/d;

if (n<0)

P = P * (-abs(n)/d);

cout << P;

cout << P;

return 0;

80. Se citeste un numar intreg n de maxim 4 cifre .Sa se afiseze divizorii in ordine descrescatoare.

IN: -24

OUT: 24 12 8 6 4 3 2 1 -1 -2 -3 -4 -6 -8 -12 -24


#include <iostream>

using namespace std;

int main()

int n;

cin >> n;

if (n==0)

cout << n << " are un numar infinit de divizori";

for (int d=abs(n); d>=1; d--)

if (abs(n)%d==0)

cout << d << " ";

if (n <0)

for (int d=1; d<=abs(n); d++)

if (abs(n)%d==0)

cout << -d << " ";

return 0;

81. Se citeste un numar intreg n de maxim 4 cifre.Sa se afiseze cel mai mare divizor prim a lui n.
IN: -234
OUT: 2 la puterea 1
3 la puterea 2
13 la puterea 1
cel mai mare divizor prim al lui -234 este 13
#include <iostream>

using namespace std;

int main()

int n, cn;

cin >> n;

cn = n;

n = abs(n);

int dprim = 2, dprim_max=2; // dprim va fi, pe rand, fiecare factor prim din descompunere

int p; // p va fi puterea lui dprim in descompunere

// il impartim pe n la dprim in mod repetat, pana cand devine 1

while(n > 1)

// numaram de cate ori se imparte n la dprim. Aceasta va fi puterea lui dprim in descompunere

p = 0;

while(n % dprim == 0)

p++;

n = n/dprim;

// daca s-a facut cel putin o impartire, afisam factorul si puterea

if(p)

cout << dprim << " la puterea " << p << endl;

dprim_max = dprim;

dprim++;

// daca dprim * dprim il depaseste pe n si n nu este 1, decidem ca n este prim,

// si este factor in descompunerea valorii initiale a lui n


if(n>1 && dprim * dprim > n)

dprim = n; // trecem direct la n, urmatorul factor din descompunere

cout << "cel mai mare divizor prim al lui " << cn << " este " << dprim_max;

return 0;

82. Se citeste un numar intreg n de maxim 4 cifre.Sa se afiseze cel mai mic divizor prim a lui n.

IN: 75

OUT:

3 la puterea 1

5 la puterea 2

cel mai mic divizor prim al lui 75 este 3

IN: -75

OUT:

3 la puterea 1

5 la puterea 2

cel mai mic divizor prim al lui -75 este -5

#include <iostream>

using namespace std;

int main()

int n, cn;

cin >> n;

cn = n;

int dprim = 2, dprim_min=10001, dprim_max=2;// dprim va fi, pe rand, fiecare factor prim din descompunere

int p; // p va fi puterea lui dprim in descompunere

// il impartim pe n la dprim in mod repetat, pana cand devine 1


if (n>0)

while(n > 1)

// numaram de cate ori se imparte n la dprim. Aceasta va fi puterea lui dprim in descompunere

p = 0;

while(n % dprim == 0)

p++;

n = n/dprim;

// daca s-a facut cel putin o impartire, afisam factorul si puterea

if(p)

cout << dprim << " la puterea " << p << endl;

if (dprim < dprim_min)

dprim_min = dprim;

dprim++;

// daca dprim * dprim il depaseste pe n si n nu este 1, decidem ca n este prim,

// si este factor in descompunerea valorii initiale a lui n

if(n>1 && dprim * dprim > n)

dprim = n; // trecem direct la n, urmatorul factor din descompunere

cout << "cel mai mic divizor prim al lui " << cn << " este " << dprim_min;
}

if (cn<0)

n = cn;

n = abs(n);

while(n > 1)

// numaram de cate ori se imparte n la dprim. Aceasta va fi puterea lui dprim in descompunere

p = 0;

while(n % dprim == 0)

p++;

n = n/dprim;

// daca s-a facut cel putin o impartire, afisam factorul si puterea

if(p)

cout << dprim << " la puterea " << p << endl;

dprim_max = dprim;

dprim++;

// daca dprim * dprim il depaseste pe n si n nu este 1, decidem ca n este prim,

// si este factor in descompunerea valorii initiale a lui n

if(n>1 && dprim * dprim > n)

dprim = n; // trecem direct la n, urmatorul factor din descompunere

}
cout << "cel mai mic divizor prim al lui " << cn << " este " << - dprim_max;

return 0;

83. Se citeste un numar intreg n de maxim 4 cifre.Sa se afiseze diferenta dintre cel mai mare si cel mai mic divizor
propriu.Daca un numar nu are divizori proprii se va afisa 0.

IN: 125

OUT:

5 la puterea 3

divizorul prim maxim 5

divizorul prim minim 5

diferenta este 0

IN: 24

OUT:

2 la puterea 3

3 la puterea 1

divizorul prim maxim 3

divizorul prim minim 2

diferenta este 1

IN: 7

OUT:

7 la puterea 1

Nu are divizori proprii, afisam: 0

IN: 60

OUT:

2 la puterea 2
3 la puterea 1

5 la puterea 1

divizorul prim maxim 5

divizorul prim minim 2

diferenta este 3

Obs: daca numarul este negative, dmax ramane acelasi, iar dmin = - dmax; Rezulta ca diferenta celor doua numere
este: 2 * dmax

#include <iostream>

using namespace std;

int main()

int n, cn, d=2, p, dmin=10001, dmax=1;

cin >> n;

cn = n;

while (n>1)

p=0;

while (n%d==0)

p = p+1;

n = n/d;

if (d>dmax)

dmax = d;

if (d<dmin)

dmin = d;

if (p)
cout << d << " la puterea " << p << endl;

d = d+1;

if (n>1 && d*d>n)

d = n;

if (dmax==cn)

cout << "Nu are divizori proprii, afisam: " << 0 << endl;

else

cout << "divizorul prim maxim " << dmax << endl;

cout << "divizorul prim minim " << dmin << endl;

cout << "diferenta este " << dmax-dmin << endl;

return 0;

84. Se citeste un numar intreg n de maxim 4 cifre.Sa se afiseze puterea lui 2 din descompunerea lui n in factori primi.

IN: 60

OUT: Puterea lui 2 este: 2

IN: 24

OUT: Puterea lui 2 este: 3

IN: 7

OUT: Puterea lui 2 este: 0

IN: 6

OUT: Puterea lui 2 este: 1

IN: 15

OUT: Puterea lui 2 este: 0


#include <iostream>

using namespace std;

int main()

int n, d, p=0;

cin >> n;

n = abs(n);

d =2;

while (n%d==0)

p = p + 1;

n = n/d;

cout << "Puterea lui 2 este: " << p;

return 0;

85. Se citeste un numar intreg n de maxim 4 cifre.Sa se afiseze toti divizorii primi ai lui n.

IN: 24

OUT:

2 la puterea 3

3 la puterea 1

IN: 11

OUT:

11 la puterea 1

#include <iostream>

using namespace std;

int main()

{
int n, d=2, p;

cin >> n;

n = abs(n);

while (n>1)

p = 0;

while (n%d == 0)

p = p+1;

n = n/d;

if (p)

cout << d << " la puterea " << p << endl;

d = d + 1;

if (n>1 && d*d > n)

d = n;

return 0;

86. Se citeste un numar intreg n de maxim 4 cifre.Sa se afiseze descompunerea lui n in factori primi.

Vezi rezolvarea de la problema 85.

87. Se citeste un numar intreg n de maxim 4 cifre.Sa se afiseze suma puterilor din descompunerea lui n in factori primi.

IN: 7

OUT:

7 la puterea 1

Suma puterilor divizorilor primi este: 1

IN: 120

OUT:
2 la puterea 3

3 la puterea 1

5 la puterea 1

Suma puterilor divizorilor primi este: 5

#include <iostream>

using namespace std;

int main()

int n, cn, d=2, p, Sum_p=0;

cin >> n;

n = abs(n);

cn = n;

while (n>1)

p = 0;

while (n%d == 0)

p = p+1;

n = n/d;

if (p)

cout << d << " la puterea " << p << endl;

Sum_p = Sum_p + p;

d = d + 1;

if (n>1 && d*d > n)


d = n;

cout << "Suma puterilor divizorilor primi este: " << Sum_p << endl;

return 0;

88. Se citeste un numar intreg n de maxim 4 cifre. Sa se verifice daca n este prim.

IN: 79

OUT:

79 la puterea 1

Suma divizorilor primi este: 79

#include <iostream>

using namespace std;

int main()

int n, cn, d=2, p, Sum_d=0;

cin >> n;

n = abs(n);

cn = n;

while (n>1)

p = 0;

while (n%d == 0)

p = p+1;

n = n/d;

if (p)
{

cout << d << " la puterea " << p << endl;

Sum_d = Sum_d + d;

d = d + 1;

if (n>1 && d*d > n)

d = n;

cout << "Suma divizorilor primi este: " << Sum_d << endl;

if (Sum_d == cn)

cout << "Numarul " << cn << " este prim";

else

cout << "Numarul " << cn << " nu este prim";

return 0;

89. Se citeste un numar intreg n de maxim 4 cifre.Sa se verifice daca n este perfect ( suma divizorilor lui n este egala
cu n, dar nu se aduna la suma divizorilor numarul n).

IN: 24

OUT:

1 24 2 12 3 8 4 6

Suma divizorilor strict mai mici ca numarul este: 36

Numarul 24 nu este perfect

IN: 28

OUT:

1 28 2 14 4 7

Suma divizorilor strict mai mici ca numarul este: 28

Numarul 28 este perfect


IN: 496

OUT:

1 496 2 248 4 124 8 62 16 31

Suma divizorilor strict mai mici ca numarul este: 496

Numarul 496 este perfect

#include <iostream>

using namespace std;

int main()

int n, Sum_d=0;

cin >> n;

n = abs(n);

for (int d=1; d*d<=n; d++)

if (n%d==0)

cout << d << " ";

Sum_d = Sum_d + d;

if (d*d<n)

cout << n/d << " ";

Sum_d = Sum_d + n/d;

Sum_d = Sum_d - n; // scadem din suma divizorilor numarul insusi


cout << endl << "Suma divizorilor strict mai mici ca numarul este: " << Sum_d << endl;

if (Sum_d==n)

cout << "Numarul " << n << " este perfect";

else

cout << "Numarul " << n << " nu este perfect";

return 0;

90. Se citeste un numar natural n de maxim 2 cifre.Sa se scrie un program care afiseaza puterea lui 10 din
descompunerea in factori primi a lui n!.(n!=1*2*3*…*n)

IN: 11

OUT:

puterea lui 2 este 8 ; puterea lui 2 este 2

Numarul zerourilor de la finalul lui factorial de 11 este 2

39916800

#include <iostream>

using namespace std;

int main()

int n, x, nr_zero_final, p2, p5, produs_p2=0, produs_p5=0, n_factorial=1;

cin >> n;

n = abs(n);

for (int i=1; i<=n; i++)

x = i;

p2=0;

while (x%2==0)

{
p2 = p2+1;

x = x/2;

produs_p2 = produs_p2 + p2;

p5=0;

while (x%5==0)

p5 = p5+1;

x = x/5;

produs_p5 = produs_p5 + p5;

cout << "puterea lui 2 este " << produs_p2 << " ; " << "puterea lui 2 este " << produs_p5 << endl;

nr_zero_final = min(produs_p2, produs_p5);

cout << "Numarul zerourilor de la finalul lui factorial de " << n << " este " << nr_zero_final << endl;

for (int i =1; i<=n; i++)

n_factorial = n_factorial *i;

cout << n_factorial;

return 0;

}
91. Se citesc 2 numere intregi de maxim 9 cifre m si n de maxim 4 cifre.Sa se afiseze divizorii comuni.

Iată și o implementare ceva mai eleganta a algoritmului lui Euclid pt cmmdc (a, b), cu
impartiri:
while (b)
{
int r = a % b;
a = b;
b = r;
}
cout << a << '\n';

La fiecare pas, îl copiem pe b în a și pe r (restul împărțirii) în b, menținând astfel


invariantul a>b. Numai la primul pas este posibil ca acesta să nu fie îndeplinit. Dacă inițial a =
b, algoritmul se termină într-un pas, iar dacă a<b, numerele se inversează după primul
pas, a devenind mai mare decât b.

IN: 486 972

OUT:

cmmdc al numerelor (486 , 972) = 486

divizorii comuni sunt:

1 486 2 243 3 162 6 81 9 54 18 27

IN: 120 54

OUT:

cmmdc al numerelor (120 , 54) = 6

divizorii comuni sunt:

1623

#include <iostream>

using namespace std;

int main()

int a, b, ca, cb, r;

cin >> a >> b;

ca = a;
cb = b;

while (b)

r = a % b;

a = b;

b = r;

cout << "cmmdc al numerelor (" << ca << " , " << cb << ") = " << a << "\n";

cout << "divizorii comuni sunt:" << "\n";

for (int d=1; d*d<=a; d++)

if (a%d==0)

cout << d << " ";

if (d*d<a)

cout << a/d << " ";

return 0;

92. Se citesc 2 numere intregi de maxim 9 cifre m si n de maxim 4 cifre.Sa se afiseze divizorii primi comuni.

IN: 486 972

OUT:

cmmdc al numerelor (486 , 972) = 486

divizorii primi comuni sunt:

2 fara la puterea 1

3 fara la puterea 5
IN: 120 54

OUT:

cmmdc al numerelor (120 , 54) = 6

divizorii primi comuni sunt:

2 fara la puterea 1

3 fara la puterea 1

#include <iostream>

using namespace std;

int main()

int a, b, ca, cb, r;

cin >> a >> b;

ca = a;

cb = b;

while (b)

r = a % b;

a = b;

b = r;

cout << "cmmdc al numerelor (" << ca << " , " << cb << ") = " << a << "\n";

cout << "divizorii primi comuni sunt:" << "\n";

int d = 2;

while (a>1)

int p = 0;

while(a%d == 0)
{

p = p+1;

a = a/d;

if (p)

cout << d << " fara la puterea " << p << "\n";

d = d+1;

if (a>1 && d*d>a)

d = a;

return 0;

93. Se citeste un numar intreg n de maxim 4 cifre.Sa se afiseze toti divizorii pari.

IN: 24

OUT:

24; 2; 12; 8; 4; 6;

IN: 16

OUT: 16; 2; 8;

#include <iostream>

using namespace std;

int main()

int n;

cin >> n;

n = abs(n);

for (int d=1; d*d < n; d++)


{

if (n%d == 0)

if (d%2 == 0)

cout << d << "; ";

if (d*d<n && (n/d)%2==0)

cout << n/d << "; ";

return 0;

94. Se citeste un numar intreg n de maxim 4 cifre.Sa se afiseze media aritmetica a divizorilori primi a lui n.

IN: 24

OUT:

2 la puterea 3

3 la puterea 1

Suma divizorilor primi este: 5

Media aritmetica a divizorilor primi este: 2.50

IN: -60

OUT:

2 la puterea 2

3 la puterea 1

5 la puterea 1

Suma divizorilor primi este: 10

Media aritmetica a divizorilor primi este: 3.33


#include <iostream>

#include <iomanip>

using namespace std;

int main()

int n, cn, d, p, Sum_d=0, cnt=0;

double ma;

cin >> n;

n = abs(n);

//cn = n;

d = 2;

while (n>1)

p = 0;

while (n%d == 0)

p = p+1;

n = n/d;

if (p)

cout << d << " la puterea " << p << endl;

Sum_d = Sum_d + d;

cnt = cnt +1;

d = d + 1;

if (n>1 && d*d > n)

d = n;

}
cout << "Suma divizorilor primi este: " << Sum_d << endl;

ma = (double)Sum_d/cnt;

cout << "Media aritmetica a divizorilor primi este: " << fixed << setprecision(2) << ma;

return 0;

95. Se citesc 2 numere intregi de maxim 9 cifre m si n de maxim 4 cifre.Sa se afiseze cmmdc(n,m).

196 224

cmmdc al numerelor (196 , 224) = 28

7 17

cmmdc al numerelor (7 , 17) = 1

20 21

cmmdc al numerelor (20 , 21) = 1

#include <iostream>

using namespace std;

int main()

int n, cn, m, cm, rest;

cin >> n >> m;

cn = n;

cm = m;

while (m)

rest = n%m;
n = m;

m = rest;

cout << "cmmdc al numerelor (" << cn << " , " << cm << ") = " << n << "\n";

return 0;

96. Se citesc 2 numere intregi de maxim 9 cifre m si n de maxim 4 cifre.Sa se afiseze cmmmc(n,m)

84 = 2^2 * 3 * 7

196 = 2^2 * 7^2

cmmdc = 2^2 *7

cmmmc = 2^2 * 3 * 7^2

84 196

cmmdc al numerelor (84 , 196) = 28

cmmmc al numerelor (84 , 196) = 588

#include <iostream>

using namespace std;

int main()

int n, cn, m, cm, rest, cmmdc, cmmmc;

cin >> n >> m;

cn = n;

cm = m;

while (m)

rest = n%m;
n = m;

m = rest;

cmmdc = n;

cmmmc = (cn * cm)/cmmdc;

cout << "cmmdc al numerelor (" << cn << " , " << cm << ") = " << cmmdc << "\n";

cout << "cmmmc al numerelor (" << cn << " , " << cm << ") = " << cmmmc << "\n";

return 0;

97. Se citesc 2 numere intregi de maxim 9 cifre m si n de maxim 4 cifre.Sa se verifice daca sunt prime intre ele.

Doua numere naturale care au cel mai mare divizor comun egal cu 1 se numesc prime intre
ele sau relativ prime.
(a,b) = 1 ⇒ a si b sunt numere prime intre ele.

79 74

cmmdc al numerelor (79 , 74) = 1

numerele sunt prime intre ele

14 84

cmmdc al numerelor (14 , 84) = 14

numerele nu sunt prime intre ele

200 201

cmmdc al numerelor (200 , 201) = 1

numerele sunt prime intre ele

#include <iostream>
using namespace std;

int main()

int n, cn, m, cm, rest, cmmdc;

cin >> n >> m;

cn = n;

cm = m;

while (m)

rest = n%m;

n = m;

m = rest;

cmmdc = n;

cout << "cmmdc al numerelor (" << cn << " , " << cm << ") = " << cmmdc << "\n";

if (cmmdc==1)

cout << "numerele sunt prime intre ele";

else

cout << "numerele nu sunt prime intre ele";

return 0;

98. Se citesc 2 numere intregi de maxim 9 cifre m si n de maxim 4 cifre.Sa se afiseze toate numerele naturale x cu
proprietatea ca x<=n si x si m sunt prime intre ele.

Doua numere naturale care au cel mai mare divizor comun egal cu 1 se numesc prime intre
ele sau relativ prime.
(a,b) = 1 ⇒ a si b sunt numere prime intre ele.
17 10

cmmdc al numerelor (1 , 17) = 1

cmmdc al numerelor (2 , 17) = 1

cmmdc al numerelor (3 , 17) = 1

cmmdc al numerelor (4 , 17) = 1

cmmdc al numerelor (5 , 17) = 1

cmmdc al numerelor (6 , 17) = 1

cmmdc al numerelor (7 , 17) = 1

cmmdc al numerelor (8 , 17) = 1

cmmdc al numerelor (9 , 17) = 1

cmmdc al numerelor (10 , 17) = 1


10

15 7

cmmdc al numerelor (1 , 15) = 1

cmmdc al numerelor (2 , 15) = 1

2
cmmdc al numerelor (3 , 15) = 3

cmmdc al numerelor (4 , 15) = 1

cmmdc al numerelor (5 , 15) = 5

cmmdc al numerelor (6 , 15) = 3

cmmdc al numerelor (7 , 15) = 1

#include <iostream>

using namespace std;

int main()

int n, m, cm, rest, x, cmmdc;

cin >> m >> n;

for (int i=1; i<=n; i++)

x = i;

cm = m;

while (x)

rest = cm%x;

cm = x;

x = rest;

cmmdc = cm;

cout << "cmmdc al numerelor (" << i << " , " << m << ") = " << cmmdc << "\n";

if (cmmdc==1)

cout << i << " \n";


}

return 0;

99. Se citeste un numar intreg n de maxim 4 cifre.Sa se afiseze scrierea lui n in baza 2.
100. Se citeste un numar intreg n de maxim 4 cifre si un numar natural a.Sa se afiseze scrierea lui n in baza a.
101. Se citeste un numar intreg n scris in baza 2.Sa se afiseze n in baza 10.
102. Se citeste un numar intreg n de maxim 4 cifre.Sa se afiseze primii n termini ai sirului lui Fibonacci.
103. Se citeste un numar intreg n de maxim 4 cifre.Sa se verifice daca n apartine sirului lui Fibonacci.
104. Se citeste un numar intreg n de maxim 4 cifre.Sa se afiseze cel mai apropiat de n termen al sirului lui
Fibonacci.

1.#include <iostream>
using namespace std;
int main()
{
   int n,x,i,s=0;
   cin>>n;
   for(i=1; i<=n; i++)
   {
       cin>>x;
       s=s+x;
   }
   cout<<s;
   return 0;
}
2.#include <iostream>
using namespace std;
int main()
{
   int n,x,i,p=1;
   cin>>n;
   for(i=1; i<=n; i++)
   {
       cin>>x;
       p=p*x;
   }
   cout<<p;
   return 0;
}
3.#include <iostream>
#include <climits>
using namespace std;
int main()
{
   int n,x,i,maxim=INT_MIN;
   cin>>n;
   for(i=1; i<=n; i++)
   {
       cin>>x;
       if(x>maxim)
       {
           maxim=x;
       }
   }
   cout<<maxim;
   return 0;
}
4.#include <iostream>
#include <climits>
using namespace std;
int main()
{
   int n,x,i,minim=INT_MAX;
   cin>>n;
   for(i=1; i<=n; i++)
   {
       cin>>x;
       if(x<minim)
       {
           minim=x;
       }
   }
   cout<<minim;
   return 0;
}
5.#include <iostream>
using namespace std;
int main()
{
   int n,x,i,nrpoz=0;
   cin>>n;
   for(i=1; i<=n; i++)
   {
       cin>>x;
       if(x>=0)
       {
           nrpoz++;
       }
   }
   cout<<nrpoz;
   return 0;
}
6.#include <iostream>
using namespace std;
int main()
{
   int n,x,i,pimp=1;
   cin>>n;
   for(i=1; i<=n; i++)
   {
       cin>>x;
       if(x%2!=0)
       {
           pimp=pimp*x;
       }
   }
   cout<<pimp;
   return 0;
}
7.#include <iostream>
#include <climits>
using namespace std;
int main()
{
   int n,x,i,maxim=INT_MIN,k=0;
   cin>>n;
   for(i=1; i<=n; i++)
   {
       cin>>x;
       if(x>maxim)
       {
           maxim=x;
           k=1;
       }
       else if(x==maxim)
       {
           k++;
       }
   }
   cout<<k;
   return 0;
}
8.#include <iostream>
using namespace std;
int main()
{
   int n,x,k=0;
   double m=0;
   cin>>n;
   for(int i=1; i<=n; i++)
   {
       cin>>x;
       m=m+x;
       k++;
   }
   m=m/k;
   cout<<m;
   return 0;
}
9.#include <iostream>
using namespace std;
int main()
{
   int n,x,k=0;
   double m=0;
   cin>>n;
   for(int i=1; i<=n; i++)
   {
       cin>>x;
       if(x>=0)
       {
           m=m+x;
           k++;
       }
   }
   m=m/k;
   cout<<m;
   return 0;
}

Se citeste un sir de numere intregi pana la intalnirea cifrei 0. Sa se afiseze media


aritmetica a numerelor pozitive / prime / perfecte din sir.

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
      int  x, numarPrime = 0, sumaPrime = 0;
      while(cin>>x && x!=0){
       // verificam daca x este prim
       int OK = 1;
       if(x % 2 == 0 or x < 3) { // singurul numar prim divizibil cu 2 si mai mic ca 3 este numarul
2
           OK = (x == 2); // OK ia valoarea 1 daca x este egal cu 2, respectiv 0 in caz contrar
       }
       else {
           // pentru a determina eficient daca un numar este prim, este de ajuns sa mergem de
la 3 pana
           // la radical din numar, din 2 in 2
           int d = 3, radical = sqrt(x);
           while(d <= radical and OK == 1) {
               if(x % d == 0) {
                   OK = 0; // x nu este prim
               }
               else {
                   d += 2; // incrementam d cu 2 unitati
               }
           }
       }
       if(OK == 1) { // x este prim
           numarPrime++;
           sumaPrime += x;
       }
   }
   cout <<(double) sumaPrime / numarPrime;
   return 0;
}
// am pus rezultatul precis

73. Se citeste un numar intreg n de maxim 8 cifre.Sa se verifice daca este extra prim.Un numar este extra prim daca
el si numerele obtinute prin permutarea circulare la dreapta a cifrelor lui sunt prime.

Exemplu de nr extra prim este 113

#include<iostream>
using namespace std;

int f(int n)
{ int s=0,d=2;
while(n>1)
if(n%d==0) { s++;
n=n/d;
}
else d++;
return s;
}

int main()
{ int n, x,y,z;
cin>>n;
if(n<10) if(f(n)==1) cout<<"da";
else cout<<"nu";
else if(n<100) if(f(n)==1 && f(n%10*10+n/10)==1) cout<<"da";
else cout<<"nu";
else
{ x=n/100;
y=n/10%10;
z=n%10;
if(f(n)==1 && f(x*100+z*10+y)==1 && f(y*100+x*10+z)==1 &&
f(y*100+z*10+x)==1 && f(z*100+x*10+y)==1 && f(z*100+y*10+x)==1)
cout<<"da";
else cout<<"nu";
}
return 0;
}

Un numar n se numeste extraprim daca at�t el, c�t si orice numar obtinut prin
permutarea cifrelor lui n, sunt numere prime. De exemplu, numarul 113 este un numar
extraprim deoarece 113, 311, 131 sunt numere prime.
a) Scrieti definitia completa a unui subprogram f, cu un parametru, subprogram care:
- primeste prin intermediul parametrului a un numar natural nenul cu cel mult 3 cifre
- returneaza suma tuturor exponentilor din descompunerea �n factori primi a valorii
parametrului a.
Exemplu: pentru a=90 subprogramul va returna valoarea 4, deoarece a=2*3^2*5 si
1+2+1=4.
b) Scrieti un program C/C++ care citeste de la tastatura un numar natural n, 2=n=999 si,
folosind apeluri utile ale subprogramului f, verifica daca n este un numar extraprim. �n
caz afirmativ, programul afiseaza pe ecran mesajul DA, �n caz contrar afis�nd mesajul
NU.

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