Informatică, întrebare adresată de Cartof01, 9 ani în urmă

Se citesc două numere naturale x și n. Să se calculeze x^n.

Răspunsuri la întrebare

Răspuns de artur99
3
int putere = 1;
int i, x, n;
cin>>x>>n;
for(i=1;i<=n;i++){
    putere = putere * x;
}
cout<<putere;


AntiEaglesDavids: pai, varul meu, ia scrie-mi tu un pic varianta eficienta
artur99: probabil as merge pe cateva if-uri si in final daca n e mai mare fac un for cu mai multe x-uri in serie
AntiEaglesDavids: complicat
artur99: :D
artur99: saau
artur99: ma uit cum e implementata in C++, si modific ;)
AntiEaglesDavids: uite iti dau un exemplu sa vezi cat de eficienta e varianta cea buna: daca ai avea 100^100 (sa zicem ca int stocheaza numere asa de mari) loop-ul s-ar executa de 100 de ori, corect? Ei bine cu metoda buna s-ar executa de 6-7-8 ori.
AntiEaglesDavids: hai ca scriu un raspuns sa vezi la ce ma refer
artur99: pai veree, nu s-ar repeta de 100 de ori, s-ar repeta de 25 de ori :D
artur99: asta e varianta mea oficiala =))) care am explicat-o mai sus, nu cea din raspuns :D aia din raspuns e pt clasa a 9a :D
Răspuns de AntiEaglesDavids
0
Ridicarea la putere in O(logN):

#include <iostream>
using namespace std;

int pow(int e, int p)
{
    int sol = 1;

    while(p) {
        if(p & 1) sol *= e;
        e *= e;
        p >>= 1;
    }

    return sol;
}

int main()
{
    int exp, putere;
    cin >> exp >> putere;
    cout << pow(exp, putere) << '\n';
    return 0;
}



AntiEaglesDavids: stiu dar sunt importante la algortmica
AntiEaglesDavids: cred ca si la jocul meu le pot folosi
artur99: :))) nu prea cred :D adica la ce ai putea folosi? :D
AntiEaglesDavids: la generari m-ar ajuta
artur99: mno, la asta ar fi rand-ul din PHP destul :D
artur99: bine, na si cateva zone legate :D
AntiEaglesDavids: la generari de multimi nu la numere random
AntiEaglesDavids: la crearea unor parti de la harta jocului de exemplu
artur99: pai da, despre asta vorbeam si eu
artur99: generarea unei harti :D
Alte întrebări interesante