Cod sursa(job #1255612)

Utilizator dianaa21Diana Pislaru dianaa21 Data 4 noiembrie 2014 23:21:10
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.46 kb
#include <fstream>
using namespace std;
ifstream is ("lgput.in");
ofstream os ("lgput.out");

int n, p;
long long Exp(long long n, int p);

#define m 1999999973

int main()
{
    is >> n >> p;

    os << Exp(n, p);
    is.close();
    os.close();
    return 0;
}
long long Exp(long long n, int p)
{
    if(p == 0) return 1;
    if(p == 1) return n;
    if(!(p%2)) return Exp(n*n, p/2) % m;
    return ((n % m) * (Exp(n*n, (p-1)/2) % m))%m;
}