Cod sursa(job #1464048)

Utilizator SolcanMihaiSolcan Mihai Andrei SolcanMihai Data 22 iulie 2015 10:30:49
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include <cstdio>
#include <cstring>
#include <cstdlib>

using namespace std;

void solve(int &x, int &p, int &prod)
{
    if(p % 2 == 1)
    {
        prod *= x;
        p--;
    }
    else if(p % 2 == 0)
    {
        x *= x;
        p /= 2;
    }

    if(p > 1)
    {
        solve(x, p, prod);
    }
}

int main()
{
    freopen("lgput.in", "r", stdin);
    freopen("lgput.out", "w", stdout);

    int x, p, prod = 1;

    scanf("%i %i", &x, &p);

    solve(x, p, prod);

    printf("%i", prod * x);

    return 0;
}