Cod sursa(job #1249466)

Utilizator smallOneAdina Mateescu smallOne Data 26 octombrie 2014 23:46:35
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <cstdio>
#include <iostream>
#include <fstream>
#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <sstream>
#include <iomanip>
#include <cmath>
#include <cstdlib>
#include <ctype.h>
#include <cstring>
#include <string>
#include <ctime>
#include <cassert>
#include <utility>

using namespace std;

#define MOD 1999999973

int main() {
	freopen("lgput.in", "r", stdin);
	freopen("lgput.out","w", stdout);

    long long n, p, res = 1;
    cin >> n >> p;
    long long c = n % MOD;

    for(int i = 0; (1 << i) <= p; i++) {
        if(p & (1 << i))
            res = (res * c) % MOD;
        c = (c * c) % MOD;
    }

    cout << res << "\n";

	return 0;
}