Cod sursa(job #2879652)

Utilizator Tudose_StefanTudose Alexandru Stefan Tudose_Stefan Data 28 martie 2022 20:23:35
Problema Ridicare la putere in timp logaritmic Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
#define imp 1999999973

using namespace std;

ifstream fin("lgput.in");
ofstream fout("lgput.out");

unsigned long long n, p;
unsigned long long rez = 1;

long long puterelog(unsigned long long n, unsigned long long p)
{
    if (p == 0)
        return 1;
    if (p % 2 == 0)
    {
        unsigned long long curent = puterelog(n, p/2);
        return 1LL * ((curent % 1999999973)* (curent % 1999999973)) % 1999999973;
    }
    else
    {
        unsigned long long curent = puterelog(n, (p-1)/2);
        return 1LL * ((curent % 1999999973) * (curent % 1999999973) * (n % 1999999973)) % 1999999973;
    }
}


int main()
{
    fin >> n >> p;
    fout << puterelog(n, p);
    return 0;
}