Cod sursa(job #1836199)

Utilizator Corina203Corina Corina203 Data 27 decembrie 2016 22:36:32
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 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;
}