Documente Academic
Documente Profesional
Documente Cultură
Probleme 3.12
Probleme 3.12
#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;
}
int main() {
int n,maxi,x,minic,c,val;
cin >> n;
maxi = -1;
minic = 10;
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;
}
return 0;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}