Nu obții 100 de puncte sau ai nelămuriri în privința problemelor? Scrie-mi pe Instagram.
Ai găsit o greșeală, vrei să raportezi un utilizator sau vrei să comunici altceva? Folosește formularul de contact.
Vrei să ne transmiți o părere despre platformă? Folosește formularul de feedback.
Folosește următoarele shortcuturi pentru a naviga mai ușor pe platformă.
Meniu shortcuturi | ? |
Căutare probleme sau utilizatori | / |
Navigare printre rezultatele căutării | ↑, ↓ |
Meniu de contact și feedback | CTRL + Shift + F |
Ieșire din meniuri | Esc |
Setări editor | CTRL + Shift + S |
Schimbare stil editor | CTRL + Shift + E |
Șabloane de cod | CTRL + Shift + 1/2/3 |
Golire editor | CTRL + Shift + 4 |
Dându-se un număr natural n
, să se determine dacă este par sau impar, fără a folosi operatorul %
(modulo).
Exemplu. Pentru n = 11
, răspunsul este IMPAR
.
Această metodă de rezolvare se folosește de operatorii pe biți. Ultimul bit al unui număr este 1
, dacă n
este impar, respectiv 0
în caz contrar (acest lucru se demonstrează ușor: toate celelalte puteri de 2
din reprezentarea binară sunt numere pare, mai puțin cel de pe poziția 0
, care este 1
— astfel, dacă ultimul bit al numărului este 1
, atunci numărul este impar, respectiv par în caz contrar).
Așadar, trebuie doar să aflăm valoarea ultimului bit al lui n
. Acest lucru se poate face cu operatorul AND
, între numărul n
și 1
. Aplicând această operație, vom obține un număr care elimină toți ceilalți biți din n
, înafară de primul bit. Astfel, dacă numărul este 1
, atunci n
este impar, respectiv par în caz contrar:
Iată codul folosind regulile menționate mai sus:
#include <iostream>
using namespace std;
int main()
{
//Declarăm și citim numărul n
int n;
cin >> n;
//Verificăm paritatea lui n
if(n & 1) {
cout << "IMPAR";
} else {
cout << "PAR";
}
return 0;
}