Cod sursa(job #2104183)

Utilizator cristicretancristi cretan cristicretan Data 11 ianuarie 2018 12:39:30
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda arhivacre Marime 0.5 kb
/// ridicare la putere in timp logaritmic
#include <iostream>
#include <fstream>
#include <algorithm>
#include <utility>
#define m 1999999973
///#define f cin
///#define g cout
using namespace std;

ifstream f("lgput.in");
ofstream g("lgput.out");

long long n, p;

int main()
{
    f >> n >> p;
    long long a = n, ans = 1;
    for(int i = 0; (1<<i) <= p; ++i)
    {
        if(((1<<i) & p) > 0) ans = (ans * a) % m;
        a = (a * a) % m;
    }
    g << ans << '\n';
    return 0;
}