Cod sursa(job #3295517)

Utilizator mcrg05Craciunescu Mihnea Gabriel mcrg05 Data 6 mai 2025 12:30:53
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.56 kb
#include<bits/stdc++.h>
#define MOD 1999999973

using namespace std;

int lgput(uint32_t n, uint32_t p){ //n la p
    //cout << "n:" << n << "\n";
    //cout << "p:" << p << "\n";
    if (p == 0) return 1;
    //else if (p == 1) return n;
    else if (p < 0) return lgput(1 / n, -p);
    else if (p & 1) return n * lgput(n * n, (p - 1) / 2);
    else return lgput(n * n, p / 2);
}

int main(){
    freopen("lgput.in", "r", stdin);
    freopen("lgput.out", "w", stdout);
    uint32_t n, p;
    cin >> n >> p;
    cout << lgput(n, p) % MOD;
    return 0;
}