Cod sursa(job #1459563)

Utilizator zvonTutuldunsa Voronokda zvon Data 10 iulie 2015 11:21:51
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 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;
    else
        if (p % 2 == 0)
            return ridicare(((n % MOD) * (n % MOD) % MOD), p / 2);
        else
            return n * ridicare(((n % MOD) * (n % MOD) % MOD), p / 2);
}

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;
}