Cod sursa(job #2543025)

Utilizator tudorcioc5Cioc Tudor tudorcioc5 Data 10 februarie 2020 19:43:50
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 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 == 0ll) return 1ll;
	
 
	
    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;
	
}