Cod sursa(job #1246887)

Utilizator cristian.caldareaCaldarea Cristian Daniel cristian.caldarea Data 21 octombrie 2014 19:22:32
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.46 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("lgput.in");
ofstream fout("lgput.out");
const int m = 1999999973;

unsigned int n, p;
long long x, sol = 1;

int main()
{
    fin >> n >> p;
    x = n;
    for ( unsigned int i = 0; (1<<i) <= p; ++ i)
    {
        if ( ((1<<i) & p) )
            sol= (sol * x) % m;

            x=(x * x) % m;
    }
    fout << sol;

    fin.close();
    fout.close();
    return 0;
}