Cod sursa(job #2941508)

Utilizator Codrut198Codrut Dinca Codrut198 Data 17 noiembrie 2022 20:27:27
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
using namespace std;
ifstream f("lgput.in");
ofstream g("lgput.out");
int main()
{
    long long n,p,pr=1999999973,x,x1,x2,x3,x4,x5;
    f>>n>>p;
    x=n;
    x1=(x*x)%pr;
    x2=(x1*x1)%pr;
    x3=(x2*x2)%pr;
    x4=(x3*x3)%pr;
    x5=(x4*x4)%pr;
    while(p>32)
    {
        x = x5*x;
        x = x%pr;
        p-=32;
    }
    while(p>16)
    {
        x = x4*x;
        x = x%pr;
        p-=16;
    }
    while(p>8)
    {
        x = x3*x;
        x = x%pr;
        p-=8;
    }
    while(p>4)
    {
        x = x2*x;
        x = x%pr;
        p-=4;
    }
    while(p>2)
    {
        x = x1*x;
        x = x%pr;
        p-=2;
    }
    while(p>1)
    {
        x = n*x;
        x = x%pr;
        p--;
    }
    g<<x;
}