Cod sursa(job #1925958)

Utilizator MaligMamaliga cu smantana Malig Data 13 martie 2017 21:10:16
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <iostream>
#include <fstream>
#include <climits>
#include <algorithm>

using namespace std;
ifstream in("lgput.in");
ofstream out("lgput.out");

const long long mod = 1999999973;

long long pw(long long,long long);

int main() {
    long long B,E;
    in>>B>>E;
    out<<pw(B,E);

    in.close();out.close();
    return 0;
}

long long pw(long long b,long long e) {
    b %= mod;
    if (e == 0) {
        return 1;
    }
    if (e == 1) {
        return b;
    }
    if (e % 2 == 1) {
        return (b * pw(b*b,(e-1)/2)) % mod;
    }
    if (e % 2 == 0) {
        return pw(b*b,e/2) % mod;
    }
}