Cod sursa(job #1671931)

Utilizator Ricso47rico rico Ricso47 Data 2 aprilie 2016 11:38:15
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.53 kb
#include <iostream>
#include <fstream>
#define x 1999999973

using namespace std;

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

long long n, a;

int lgpow(int a, int n)
{
    if(a == 0)
    {
        return 1;
    }

    int semipow = lgpow(a, n / 2);

    semipow =((long long)semipow * semipow) % x;

    if(n % 2 == 0)
    {
        return semipow;
    }
    else
    {
        return ((long long) semipow * a) % x;
    }
}

int main()
{
    in >> n >> a;
    out << lgpow(n , a);
    return 0;
}