Cod sursa(job #2718505)

Utilizator HadefAlexandru Haidet Hadef Data 8 martie 2021 19:38:15
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <iostream>
using namespace std;
int Vbits[1001],nr_bit;

void biti(int x,int& nr_bit,int Vbits[1001])
{
    int p=0;
    while(x!=0)
    {
        Vbits[nr_bit]=x%2;
        x=x/2;
        nr_bit++;
    }
}

unsigned long long putere(int x,int nr_bit,int Vbits[1001])
{
    unsigned long long r=1;
    while(nr_bit>=0)
    {
        r=r*r;
        if(Vbits[nr_bit]==1)
            r=r*x;
        else
            r=r*1;
        nr_bit--;
    }
    return r;
}

int main()
{
    int x, n;
    cout<<"Numarul este : ";
    cin>>x;
    cout<<"Exponentul este : ";
    cin>>n;
    biti(n,nr_bit,Vbits);
    cout<<putere(x,nr_bit,Vbits);
    return 0;
}