Cod sursa(job #2540785)

Utilizator tudorcioc5Cioc Tudor tudorcioc5 Data 7 februarie 2020 18:40:15
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>
using namespace std;

const long long mod=1999999973;

long long log_exp (long long base, long long power){
    long long to_return;

    if (power == 1ll) return (base%mod);

    long long aux = power % 2;

    switch (aux){
        case 0ll:
            to_return = log_exp((base%mod) * (base%mod), power/2) % mod;
            break;

        case 1ll:
            to_return = (base%mod * ((log_exp((base%mod) * (base%mod), power/2)) %mod));
            break;
    }

    return to_return;
}

ifstream fin;
ofstream fout;


int main (void){
    long long n,p;

    fin.open("lgput.in");
    fin>>n>>p;
    fin.close();

    long long result = log_exp(n , p);
    result %= mod;

    fout.open("lgput.out");
    fout<<result<<"\n";
    fout.close();

    return 0;
}