Cod sursa(job #1093015)

Utilizator vyrtusRadu Criuleni vyrtus Data 27 ianuarie 2014 17:57:03
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.49 kb
#include <fstream>
#include <iostream>

#define m 1999999973
#define big unsigned long long
using namespace std;

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

unsigned int n,p;
big sol = 1, a;

int main()
{
    f >> n >> p;
    a = n;
    for (int i=0; (1<<i) <= p; ++i)
    {
        if (((1<<i) & p) > 0)
            {
                sol = (sol%m) * a;
                sol %= m;
            }
      a = (a*a) % m;

    }

    g << sol << "\n";

    return 0;
}