Cod sursa(job #1938469)

Utilizator FrequeAlex Iordachescu Freque Data 24 martie 2017 20:26:53
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("lgput.in");
ofstream fout("lgput.out");

const int MOD = 1999999973;

long long int ridica(long long int n, long long int p)
{
    if (p == 1)
        return n % MOD;
    if (p % 2 == 0)
    {
        long long int i = ridica(n & MOD, (p / 2) % MOD) % MOD;
        return (i * i) % MOD;
    }
    long long int i = ridica(n % MOD, (p / 2) % MOD) % MOD;
    return ((i * i) % MOD) * (n % MOD) % MOD;
}

int main()
{
    long long int n, put;
    fin >> n >> put;
    fout << ridica(n, put);
    return 0;
}