Sunteți pe pagina 1din 8

Cele mai mari doua numere din sir

#include <iostream>
using namespace std;

int main() {
int n,maxi,x,a;
cin >> n;
maxi = -1;
a = -1;
for (int i = 1; i <= n; i++)
{
cin >> x;
if (x > maxi) {
a = maxi;
maxi = x;
}
else if (x > a)
a = x;
}
cout << a <<" "<< maxi;
return 0;
}

determină numărul din șir care are prima cifră minimă.


#include <iostream>
using namespace std;

int main() {
int n,maxi,x,minic,c,val;
cin >> n;
maxi = -1;
minic = 10;

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


{
cin >> x;
c = x;
while (c > 9) {
c = c / 10;
}
if (c < minic) {
minic = c;
val = x;
}
else if (c == minic && val < x)
val = x;
}
cout << val;
return 0;
}
Cifra para minima a unui numar
#include <iostream>
using namespace std;

int main() {
int n,c,maxi;
cin >> n;
maxi = -1;
if (n == 0)
maxi = 0;
while (n > 0) {
c = n % 10;
if (c % 2 == 0)
if (maxi < c) maxi = c;
n = n / 10;
}

cout << maxi;

return 0;
}

Cel mai mare numar par si numarul de aparitii al acestuia


#include <iostream>
using namespace std;

int main() {
int n,c,maxi,x,nr;
cin >> n;
maxi = -1;
nr = 0;
for (int i = 1; i <= n; i++)
{
cin >> x;
if (x > maxi && x%2 == 0) {
maxi = x;
nr = 1;
}
else if (x == maxi)
nr++;
}
cout << maxi << " " << nr;

return 0;
}

Suma cifrelor
#include <iostream>
using namespace std;

int main() {
int n, c, s;
cin >> n;
s = 0;
while (n)
{
c = n % 10;
s = s + c;
n = n / 10;
} cout << s;
return 0;
}

Numarul cifrelor pare


#include <iostream>
using namespace std;

int main() {
int n, c, nr;
cin >> n;
nr = 0;
do
{
c = n % 10;
if (c % 2 == 0)
nr = nr + 1;
n = n / 10;
} while (n);
cout << nr;
return 0;
}

!!! ai grijă la cazul cu n=0 pt algoritmii pe cifre

!!! ai grijă la n=n/10

- la produs ai grija la cazul cu n=0

Inversul numarului
#include <iostream>
using namespace std;

int main() {
int n, c, inv;
cin >> n;
inv = 0;
while (n)
{
c = n % 10;
inv = inv * 10 + c;
n = n / 10;
}cout << inv;
return 0;
}
Numarul format din cifrele pare ale numarului
#include <iostream>
using namespace std;

int main() {
int n, c,nr,p=1;
cin >> n;
nr = 0;
while (n)
{
c = n % 10;
if (n % 2 == 0) {
nr = c*p + nr;
p = p * 10;
}
n = n / 10;
} cout << nr;
return 0;
}

Pb1
#include <iostream>
using namespace std;

int main() {
// se da un sir cu n elemente. sa se numere cate elemente au numarul format foar
din cifre impare palindrom. daca numarul nu
// are cifre impare, acesta nu se numara

int n, x, p, c, nr,a,inv,nr2;
cin >> n;
nr = 0;
p = 1;
inv = 0;
nr2 = 0;
for (int i = 1; i <= n; i++)
{
cin >> x;
p = 1; nr = 0; inv = 0;
// formam numarul din cifrele impare:
while (x)
{
c = x % 10;
if (c % 2 == 1) {
nr = nr + c * p;
p = p * 10;
}
x = x / 10;
}
// ii calculam inversul pt a verifica proprietatea de palindrom
int aux = nr;
while (aux)
{
c = aux % 10;
inv = inv * 10 + c;
aux = aux / 10;
}

if (inv == nr && nr!=0)


nr2++;
}
cout << nr2;
return 0;
}

Sa se verifice o proprietate
#include <iostream>
using namespace std;

int main() {
// se da n. sa se verifice daca toate cifrele sunt pare

int n,c;
cin >> n;
int ok = 1; // presupunem ca toate cifrele respecta conditia
while(n)
{
c = n % 10;
if (c % 2 == 1)
ok = 0; // am gasit o cifra care nu respecta conditia
n = n / 10;
}
if (ok == 0)
cout << "Nu";
else
cout << "Da";
return 0;
}

#include <iostream>
using namespace std;

int main() {
// se dau n numere. sa se verifice daca exista cel putin un numar impar

int n,c,x;
cin >> n;
int ok = 0; // presupunem ca nu avem numere care respecta conditia
for (int i = 1; i <= n; i++) {
cin >> x;
if (x % 2 == 1)
ok = 1; // am gasit un numar care respecta conditia

}
if (ok == 0)
cout << "Nu";
else
cout << "Da";
return 0;
}
OBS
- la problemele de tipul:
o sa se verifice dacă toate numerele/cifrele respectă o condiție
 presupun că toate numerele respectă condiția(îmi iau un ok=1) și mă întreb
când găsesc un număr care nu respectă condiția (făcând ok=0)

ex pentru numere:
cin>>n;
int ok=1;
for(int i=1; i<=n; i++){
cin>>x;
// prelucrare x
if(x nu respectă proprietatea)
ok=0;
}

ex pentru cifre:
cin>>n;
int ok=1;
while(n){
int c=n%10;
if(c nu respectă proprietatea)
ok=0;
n=n/10;
}

pentru ambele cazuri:


if(ok==0)
cout<<”Nu”;
else
cout <<”Da”;
o să se verifice dacă există cel puțin un număr/o cifră care respectă proprietatea
 presupun că toate numerele nu respectă condiția(îmi iau un ok=0) și mă întreb
când găsesc un număr care respectă condiția (făcând ok=1)

ex pentru numere:
cin>>n;
int ok=0;
for(int i=1; i<=n; i++){
cin>>x;
// prelucrare x
if(x respectă proprietatea)
ok=1;
}

ex pentru cifre:
cin>>n;
int ok=0;
while(n){
int c=n%10;
if(c respectă proprietatea)
ok=1;
n=n/10;
}

pentru ambele cazuri:


if(ok==0)
cout<<”Nu”;
else
cout <<”Da”;

Suma divizorilor
#include <iostream>
using namespace std;

int main() {

int n,s;
cin >> n;
s = 0;
int d;
for ( d = 1; d * d < n; d++)
{
if(n % d == 0)
s = s + d + n/d;
}
if (d * d == n)
s = s + d;
cout << s;

return 0;
}

Numărul divizorilor
#include <iostream>
using namespace std;

int main() {

int n,nr;
cin >> n;
nr = 0;
int d;
for ( d = 1; d * d < n; d++)
{
if (n % d == 0)
nr = nr + 2;
}
if (d * d == n)
nr++;
cout << nr;

return 0;
}

Primalitate
#include <iostream>
using namespace std;

int main() {

int n;
cin >> n;
int ok = 1;
if (n < 2 || n>2 && n % 2 == 0)
ok = 0;
else {
for (int d = 3; d * d <= n; d=d+2)
{
if (n % d == 0)
ok = 0;
}
}
if (ok == 0)
cout << "Nu e prim";
else
cout << "E prim";

return 0;
}

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