Cod sursa(job #2540781)

Utilizator tudorcioc5Cioc Tudor tudorcioc5 Data 7 februarie 2020 18:28:54
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 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 == 1) return (base%mod);

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

        case 1:
            to_return = (base%mod * ((log_exp(base * base, 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;
}