Cod sursa(job #1802582)

Utilizator Deea007Andreea Deea007 Data 10 noiembrie 2016 14:58:48
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<iostream>
#include<fstream>
#include<cmath>
using namespace std;
ifstream fin("lgput.in");
ofstream fout("lgput.out");
 
bool A[33];
long long n, p, s = 1, nr = 1;
 

void binar()
{
    long long p1 = p;
    long long x = powl(2, 32);
    for(int i = 32; i >= 0; --i)
    {
        if(p1 >= x)
        {
            A[i] = 1;
            p1 -= x;
        }
        x /= 2;
    }
}
 
int main()
{
    fin>>n>>p;
    binar();
    nr = n;
    for(int i = 0; i <= 32; ++i)
    {
        if(A[i] == 1)
        {
            s *= nr;
            s %= 1999999973;
        }
        nr *= nr;
        nr %= 1999999973;
    }
    fout<<s;
 
}