Contact și feedback

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.

Shortcuturi

Folosește următoarele shortcuturi pentru a naviga mai ușor pe platformă.

Generale

Meniu shortcuturi?
Căutare probleme sau utilizatori/
Navigare printre rezultatele căutării↑, ↓
Meniu de contact și feedbackCTRL + Shift + F
Ieșire din meniuriEsc

Editor probleme

Setări editorCTRL + Shift + S
Schimbare stil editorCTRL + Shift + E
Șabloane de codCTRL + Shift + 1/2/3
Golire editorCTRL + Shift + 4

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

Obține medalia mult dorită. Devino As la olimpiadă.

Curs complet de olimpiadă, pregătit de olimpici de la Oxford și TU Delft.

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

Obține medalia mult dorită. Devino As la olimpiadă.

Curs complet de olimpiadă, pregătit de olimpici de la Oxford și TU Delft.

Cuprinsul lecției

Se încarcă…

Citește și

Suma numerelor naturale dintr-un interval dat în C++Ce este o variabilă unsigned în C++?Verifică dacă o literă este mică sau mare în C++Tipuri de date în C++: numere întregi, reale, caractere și alteleNumărul aranjamentelor în C++ (formula aranjamentelor)Calculul combinărilor de n luate câte k (nCk) în C++Numărul permutărilor în C++ (formula permutărilor)Valoarea absolută (modulul) unui număr în C++Structuri repetitive (while, do while, for, etc)Verifică dacă trei puncte sunt coliniare C++Comentarii în C++Cea mai lungă secvență de elemente crescătoare în C++Cifrele unui număr. Prelucrarea cifrelor unui număr în C++CMMMC a două numere în C++ (cel mai mic multiplu comun)Materia pentru olimpiada de informatică - tot ce trebuie să știiAlgoritm recursiv pentru căutare binară (clasa a X-a)Aplicații cu ciurul lui Eratostene în C++: suma divizorilor, numărul divizorilorCel mai mic număr cu suma cifrelor N în C++Tipul struct în C++. Ce sunt structurile de date neomogeneCel mai mare divizor comun (CMMDC) a două numere în C++Verificare număr prim în C++ (Clasa a IX-a)Cel mai semnificativ bit în C++Inversarea unui vector în C++Căutare binară în C++Instrucțiunea for (structuri repetitive)Pointer în C++. Variabile de tipul char * (char steluță)Cel mai puțin semnificativ bit în C++Suma elementelor unui vector recursiv în C++Suma 1 + 2 + 3 + ... + N în C++Funcții în C++. Ce sunt subprogrameleInversarea unui șir de caractere în C++Aflarea sumei primelor N sume GaussMaximul și minimul unui vector în C++Transformarea unui număr din baza 10 în baza 2 în C++Sortare crescătoare recursivă în C++ - Merge sort și Bubble sortMaximul și minimul a n valori în C++Numărul combinărilor în C++ (formula combinărilor)Maximul și minimul a două valori în C++Factorialul unui număr în C++Radicalul unui număr în C++ (rădăcina pătrată)Cifra maximă a unui număr recursiv în C++Verificarea unui an bisect în C++Ce înseamnă variabilă globală și locală în C++?Matrice în C++. Declararea și parcurgerea tablourilor bidimensionaleCum să citești și să afișezi în fișiere în C++Șirul lui Fibonacci în C++Citește un șir de caractere cu spații în C++Afișarea divizorilor primi ai unui număr în C++Cum să afișezi partea întreagă a unui număr real în C++Maximul și minimul a trei valori în C++Ciurul lui Eratostene în C++Recursivitate în C++Indicatorul lui Euler în C++Numărul minim de peroane pentru o gară în C++Al N-lea termen dintr-o progresie aritmeticăDivide et Impera (metodă de programare C++)Numărul de divizori al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Matrice pătratice în C++. Diagonala principală și secundarăRidicarea la putere în timp logaritmic în C++. Exponențiere rapidăGenerarea șirului Fibonacci generalizat în C++Numărul de divizori primi ai unui număr în C++Mediana unui șir de valori în C++Rădăcina cubică a unui număr în C++ (cube root)Tutorial instalare CodeBlocks (ușor) - Introducere în informatică C++Combinatorică în C++: permutări, aranjamente, combinări și alteleAl N-lea termen Fibonacci în C++Vectori de frecvență (de apariții) în C++Afișarea elementelor unui vector recursiv în C++Distanța dintre două puncte în C++Verificare dacă un număr este palindrom în C++Citirea și afișarea matricelor în C++Funcții predefinite în C++ (matematice, șiruri de caractere)Cifra de control a unui numărInstrucțiunea while (structuri repetitive)Numărul de cifre ale factorialului unui numărNumărul de apariții al unui număr într-un vector în C++Copiuțe: Cifrele unui numărVerifică dacă o literă este vocală în C++De ce cer unele probleme răspunsul modulo 666013 sau modulo 1.000.000.007?Verifică dacă un bit de pe o anumită poziție este 1 sau 0 în C++Codul ASCII (tabel complet)Al N-lea termen dintr-o progresie geometricăAflă secolul unui an citit de la tastatură în C++Vectorii în C++: citire și afișareNumere triunghiulare. Verificarea unui număr triunghiularVerifică dacă un număr este par sau impar fără modulo în C++Instrucțiunea de decizie în C++: if, else, switch, caseVerifică dacă un număr aparține șirului Fibonacci în C++Cel mai frecvent element dintr-un șir în C++Vectorii în C++: declarare și parcurgereAria unui triunghi folosind coordonatele acestora în C++Suma divizorilor numerelor de la 1 la N (Folosind ciurul lui Eratostene)Ce este o funcție void în C++?Verifică dacă un număr dat este o putere de 2 în C++Suma divizorilor unui număr în C++CMMDC recursiv a două numere naturale în C++Câte numere naturale sunt într-un interval dat? (C++)Instrucțiunea continue (structuri repetitive)Transformarea unei litere mari în literă mică în C++Matrice Fibonacci - al n-lea termen Fibonacci în timp logaritmicOglinditul unui număr în C++Instrucțiunea do while (structuri repetitive)Ce înseamnă endl în C++?Numărul de divizori al unui număr în C++Complexitatea unui algoritm (timp și spațiu) în C++Cel mai mic/mare divizor prim al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Verificare dacă șir de caractere este palindrom în C++Indicatorul lui Euler al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Transformarea unei litere mici în literă mare în C++Prima cifră a unui număr în C++Oglinditul recursiv al unui număr în C++Do while vs while în C++ - Care e diferența?Instrucțiunea break (structuri repetitive)Verifică dacă un caracter este literă în C++Transformarea unui număr din baza 2 în baza 10 în C++Aria și circumferința unui cerc în C++Operații cu numere mari în C++ - Toate funcțiile explicateBordarea unei matrice în C++Interclasarea a doi vectori în C++Șiruri de caractere în C++. Tot ce trebuie să știiCifra maximă și minimă a unui număr în C++Verifică dacă un caracter este cifră în C++Cum să calculezi instant 2 la puterea N în C++Interschimbarea a două variabile în C++ (3 metode)

© Drepturi de autor

Echipa InfoAs își rezervă drepturile de autor pentru conținutul acestei pagini. Copierea conținutului fără acordul scris expres al InfoAs reprezintă o încălcare a Legii 8/1996 și va fi tratată ca atare.

Trimite lecția

Toată lecția

Doar videoclipul pe YouTube

Informatica devine ușoară cu InfoAs

Intră în cont