Cod sursa(job #2450109)

Utilizator EckchartZgarcea Robert-Andrei Eckchart Data 21 august 2019 21:40:11
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
unsigned long long N, P;  // 2 <= N, P <= 2^32
const unsigned long long M = 1999999973;


unsigned long long mod_exp(unsigned long long base,
                           unsigned long long exponent,
                           unsigned long long modulus)
{
    if (modulus == 1)
    {
        return 0;
    }
    else
    {
        unsigned long long result = 1;
        base %= modulus;
        while (exponent > 0)
        {
            if (exponent % 2 != 0)
            {
                result = (result * base) % modulus;
            }
            exponent >>= 1;
            base = (base * base) % modulus;
        }
        return result;
    }
}


int main()
{
    std::ifstream fisierIN("lgput.in");
    fisierIN >> N >> P;
    fisierIN.close();
    std::ofstream fisierOUT("lgput.out");
    fisierOUT << mod_exp(N, P, M);
    fisierOUT.close();
    return 0;
}