Cod sursa(job #1810134)

Utilizator AkrielAkriel Akriel Data 19 noiembrie 2016 17:13:32
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <iostream>
#include <fstream>

#define lli long long int

using namespace std;

ifstream f ("lgput.in");
ofstream g ("lgput.out");

const int modulo = 1999999973;

lli number, exponent;

lli risingPower(lli number, lli exponent)
{
    if ( exponent == 0 )
        return 1;
    if ( exponent == 1 )
        return number;
    if ( exponent % 2 )
        risingPower( (number*number*number) % modulo, (exponent-1) / 2);
    else
        risingPower( (number*number) % modulo, exponent/2);
}

int main()
{
    f >> number >> exponent;
    g << risingPower(number, exponent);
}