Cum să calculezi instant 2 la puterea N în C++

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.

Metoda 1: Folosim structura repetitivă 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;
}

Metoda 2 (eficientă): biți

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 shift are 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;
}

DS

Autorul acestei lecții

Dominic Satnoianu

Această lecție a fost redactată de către Dominic Satnoianu.

© 2021 – 2025 Aspire Education Labs SRL. Toate drepturile rezervate.

Așa cum este specificat și în termeni și condiții, conținutul acestei pagini este protejat de legea drepturilor de autor și este interzisă copierea sau modificarea acestuia fără acordul scris al autorilor.

Încălcarea drepturilor de autor este o infracțiune și se pedepsește conform legii.

Comentarii 0

Autentifică-te pentru a putea comenta.

Autentifică-te