Cod sursa(job #2941561)

Utilizator Carnu_EmilianCarnu Emilian Carnu_Emilian Data 17 noiembrie 2022 21:18:46
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.61 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("lgput.in");
ofstream fout("lgput.out");

unsigned long long n, p;
const unsigned long long N = 1999999973;

unsigned long long expo(unsigned long long b, unsigned long long e){
    b %= N;
    if (e == 0) return 1;
    else if (e == 1) return b;
    else if ((e & 1) == 0){
        unsigned long long c = expo(b, e >> 1) % N;
        return c * c % N;
    }
    else{
        unsigned long long c = expo(b, e >> 1) % N;
        return c * c % N * b % N;
    }
}

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