Cod sursa(job #862874)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 22 ianuarie 2013 23:42:11
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include <iostream>
#include <fstream>
using namespace std;

#define modulo 1999999973

inline long long putere(long long n, long long p){

    if(p == 1)
        return n;

    if(p == 2)
        return (n*n) % modulo;

    if(p % 2 == 0)
        return ( (putere(putere(n,p/2),2)) % modulo );
    else
        return ( (n * putere(putere(n,(p-1)/2),2)) % modulo );
}

int main(){

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

    long long n, p, rez;

    f >> n >> p;

    rez = putere (n, p);

    g << rez << '\n';

    return 0;
}