Cod sursa(job #1800261)

Utilizator msciSergiu Marin msci Data 7 noiembrie 2016 17:00:32
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <iostream>
#include <fstream>
using namespace std;

const long long MOD = 1999999973;

ifstream fin("lgput.in");
ofstream fout("lgput.out");

// long long pow(long long x, long long n) {
//     long long y = 1;
//     while (n > 1) {
//         if (n % 2 == 0) {
//             x *= x; x %= MOD; n /= 2;
//         } else {
//             y *= x; y %= MOD; x *= x; x %= MOD; n = (n - 1) / 2;
//         }
//     }
//     return (x * y) % MOD;
// }

long long pow(long long x, long long n) {
    if (n == 0) return 1;
    else if (n == 1) return x % MOD;
    else if (n % 2 == 0) return pow((x * x) % MOD, n / 2);
    else return (x % MOD) * pow((x * x) % MOD, (n - 1) / 2);
}

int main() {
    int N, P; fin >> N >> P;
    fout << pow(N, P) << endl;
}