Cod sursa(job #1255621)

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

long long n, p;
long long Exp(long long n, long long 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, long long 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;
}