Cod sursa(job #1255626)

Utilizator dianaa21Diana Pislaru dianaa21 Data 4 noiembrie 2014 23:38:07
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.49 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 % m;
    if(!(p%2)) return ( (Exp(n, p/2) % m) * (Exp(n, p/2) % m ) ) % m;
    return ( (n % m) * (Exp(n,(p-1)) % m) ) % m;
}