Cod sursa(job #2638993)

Utilizator Razvan48Capatina Razvan Nicolae Razvan48 Data 30 iulie 2020 19:57:50
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>

using namespace std;

const long long int rest=1999999973;

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

    long long int n,p;
    long long int rez=1;
    f>>n>>p;

    int nrOp=0,i;
    int operatii[1001];
    rez=n;

    while(p>1)
    {
        if(p%2==1)
        {
            p--;
            nrOp++;
            operatii[nrOp]=1;
        }
        else
        {
            p=p/2;
            nrOp++;
            operatii[nrOp]=2;
        }
    }

    for(i=nrOp;i>=1;i--)
    {
        if(operatii[i]==2)
        {
            rez=(rez*rez)%rest;
        }
        else
        {
            rez=(rez*n)%rest;
        }
    }

    g<<(rez%rest);

    return 0;
}