Cod sursa(job #2023804)

Utilizator darkraven13Stefan Bereghici darkraven13 Data 19 septembrie 2017 15:32:12
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <fstream>
using namespace std;

int modPrime(long long n){
    const int PRIME = 1999999973;
    return n % PRIME;
}

long long product(int a, int b){
    return 1LL * a * b;
}

int fastExp(int n, int exp, long long (*p)(int, int), int (*f)(long long)){
    switch(exp){
        case 0  : return 1;
        default : return (exp % 2 == 0) ? fastExp(f(p(n, n)), exp >> 1, p, f) : f(p(n, fastExp(n, --exp, p, f)));
    }
}

int main(){
    ifstream cin("lgput.in");
    ofstream cout("lgput.out");
    int k, n;
    cin >> n >> k;
    cout << fastExp(n, k, product, modPrime);
    cin.close();
    cout.close();
    return 0;
}