Cod sursa(job #1944858)

Utilizator tudortarniceruTudor Tarniceru tudortarniceru Data 29 martie 2017 11:50:23
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.53 kb
#include <fstream>
#include <cstring>
#include <algorithm>
#define ll long long
using namespace std;

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

const ll MOD = 1999999973;
ll a, n;

ll exp(ll x, ll y) {

    ll r = 1;
    for (ll i = 0; (1 << i) <= y; ++i) {
        if ((ll)(1 << i) & y) {
            r *= x;
            r %= MOD;
        }
        x *= x;
        x %= MOD;
    }

    return r;
}

int main() {

    fin >> a >> n;
    fout << exp(a, n);

    fout.close();
    return 0;
}