Cod sursa(job #1938465)

Utilizator FrequeAlex Iordachescu Freque Data 24 martie 2017 20:24:07
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 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;
    if (p % 2 == 0)
    {
        long long int i = ridica(n & MOD, (p / 2) % MOD) % MOD;
        return i * i;
    }
    long long int i = ridica(n % MOD, (p / 2) % MOD) % MOD;
    return i * i * (n % MOD) % MOD;
}

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