Cod sursa(job #1110442)

Utilizator DarkyAngelDarky Angel DarkyAngel Data 18 februarie 2014 08:20:20
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <fstream>
#include <iostream>

using namespace std;

ifstream f("lgput.in");
ofstream g("lgput.out");

long long pow(long a, long b)
{
    long long ret = 1;
    while(b--)
    {
        ret *= a;
    }
    return ret;
}

long long expf(long a, long n)
{
    if(n < 0)
        return expf(1/a, -n);
    else if(n == 0)
        return 1;
    else if(n == 1)
        return a;
    else if(n%2)
        return a * expf(a*a, (n-1)/2);
    else
        return expf(a*a, n/2);
}

int main ()
{
    long long x, y;
    f >> x >> y;

    cout << expf(x, y);
}