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
, vrem să calculăm valoarea 2^n
(2
la puterea n
).
Exemplu: Pentru n = 4
, 2^n = 16
.
for
Cea mai ușoară și intuitivă metodă este să folosim o structură repetitivă de tip for
, care înmulțește repetat un număr cu 2
, de n
ori. Iată codul:
#include <iostream>
using namespace std;
int main()
{
//Declarăm și citim
int n, raspuns = 1;
cin >> n;
//Înmulțim raspuns cu 2 de n ori pentru a calcula 2^n. Pentru n = 0, raspuns = 1
for(int i = 1; i <= n; i++) {
raspuns = raspuns * 2;
}
//Afișăm răspunsul
cout << raspuns;
return 0;
}
Limbajul C++ are câțiva operatori speciali, cu ajutorul cărora putem să manipulăm numere după biții acestora. Ne vom referi la operatorul de shiftare de biți spre stânga, <<
.
Rezultatul operației a << b
este numărul format prin shiftarea biților lui a
cu b
poziții spre stânga. Din punct de vedere matematic, îl înmulțim pe a
cu 2
de b
ori (pentru a muta la stânga cu b
poziții), așadar a << b
este echivalent cu a * 2^b
, unde x^y
reprezintă x
la puterea y
. Operația a << b
se execută instant, în O(1)
, așadar, dacă apelăm 1 << n
, o să obținem instant 1 * 2^n = 2^n
, numărul pe care noi voiam să îl aflăm.
Așadar, codul arată cam așa:
#include <iostream>
using namespace std;
int main()
{
//Declarăm și citim
int n, raspuns = 1;
cin >> n;
//Calculăm răspunsul, folosind proprietatea menționată anterior (1 << n = 2^n).
raspuns = (1 << n);
//Afișăm răspunsul
cout << raspuns;
return 0;
}