Cod sursa(job #2403669)

Utilizator gabriel-mocioacaGabriel Mocioaca gabriel-mocioaca Data 11 aprilie 2019 19:19:16
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.56 kb
#include<bits/stdc++.h>
using namespace std;

long long M = 1999999973;

fstream in("lgput.in");
ofstream out("lgput.out");

long long lgpow(long long n, long long p){
    long long x = 1;
    if (p == 0) return x;

    while(p > 1){
        if(p % 2 == 0){
            n = (n * n) % M ;
            p /= 2;
        }
        else{
            x = (n * x) % M ;
            n = (n * n) % M ;
            p = (p - 1) / 2;
        }
    }

    return (x * n) % M;
}

int main(){
    long long n, p;
    in >> n >> p;

    out << lgpow(n,p);
}