Cod sursa(job #1459571)

Utilizator zvonTutuldunsa Voronokda zvon Data 10 iulie 2015 11:32:55
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <iostream>
#include <fstream>
#define MOD 1999999973

using namespace std;

int ridicare(int n, int p) {
    if (p == 0)
        return 1;
    else if (p == 1)
        return n % MOD;
    else
        if (p % 2 == 0)
            return ridicare(((n % MOD) * (n % MOD)) % MOD, p / 2) % MOD;
        else
            return ((n % MOD) * ridicare(((n % MOD) * (n % MOD)) % MOD, (p - 1) / 2)) % MOD;
}

int main() {
    int n;
    int p;
    ifstream fi("lgput.in");
    ofstream fo("lgput.out");

    fi >> n >> p;
    fo << ridicare(n, p);
    fi.close();
    fo.close();
    return 0;
}