Cod sursa(job #2403664)

Utilizator gabriel-mocioacaGabriel Mocioaca gabriel-mocioaca Data 11 aprilie 2019 19:17:28
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.58 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 % M) * (n % M);
            p /= 2;
        }
        else{
            x = (n % M) * (x % M);
            n = (n % M) * (n % M);
            p = (p - 1) / 2;
        }
    }

    return (x % M) * (n % M);
}

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

    out << lgpow(n,p);
}