Cod sursa(job #3003138)

Utilizator AndreiStreheStreche Andrei Claudiu AndreiStrehe Data 15 martie 2023 15:08:00
Problema Ridicare la putere in timp logaritmic Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.51 kb
#include <fstream>

using namespace std;

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

long long numar,putere,nr;
int k,i;
bool rest, r[50];

int main()
{
    f>>numar>>putere;
    nr=numar;
    while(putere>0)
    {
        rest=putere%2; putere/=2;
        k++;
        r[k]=rest;
    }
    for(i=k-1;i>=1;i--)
    {
        if(r[i]==0)
        {
            numar=(numar*numar)%1999999973;
        }
        else numar=nr*(numar*numar)%1999999973;
    }
    g<<numar;

    return 0;
}