Cod sursa(job #1836200)

Utilizator Corina203Corina Corina203 Data 27 decembrie 2016 22:39:43
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <fstream>

#define NUMBER 1999999973

using namespace std;

int64_t power(int n, int p) {
    if(n > NUMBER)
        n = n % NUMBER;
    if (p == 0)
        return 1;
    else if (p == 1)
        return n % NUMBER;
    else if (p % 2 == 0)
    {
        return  power(n, p / 2) % NUMBER  *  power(n,p/2) % NUMBER;
    }
    else if (p % 2 != 0)
    {
        return  n % NUMBER  *  power( n , (p - 1) / 2) % NUMBER  *  power( n, ( p - 1 )/2 ) % NUMBER;
    }
}

int main() {
    int n, p;
    ifstream input("lgput.in");
    ofstream output("lgput.out");
    input >> n >> p;
    output << power(n, p);
    return 0;
}