Cod sursa(job #1693112)

Utilizator LittleWhoFeraru Mihail LittleWho Data 22 aprilie 2016 13:58:13
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>

using namespace std;

long long logpow(long long n, long long p, long long div)
{
    int res = 1;

    for (int i = 0; (1<<i) <= p; ++i) {
        if (((1 << i) & p) > 0) {
            res *= n;
            res %= div;
        }
        n *= n;
        n %= div;
    }
    
    return res;
}

int main()
{
    ifstream in("lgput.in");
    ofstream out("lgput.out");
    
    long long n, p;
    in >> n >> p;
    
    long long res = logpow(n, p, 1999999973);
    out << res << "\n";
    
    in.close();
    out.close();
    return 0;
}