Cod sursa(job #3037473)

Utilizator DanielAtomDaniel Bence DanielAtom Data 25 martie 2023 16:10:01
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>

using namespace std;

unsigned long long c = 1999999973;

unsigned long long putere(unsigned long long a, unsigned long long b) {
    unsigned long long rest = 0;
    unsigned long long x = 1;
    if(b <= 2) {
        for(int i = 0; i < b; ++i) {
            x = x * a;
        }
        return x % c;
    }
    if(b % 2 == 0) {
        rest = putere(a, b/2) * putere(a, b/2);
        rest = rest % c;
    } else {
        rest = a * putere(a, b-1);
        rest = rest % c;
    }
    return rest;
}

int main() {
    unsigned long long n, p;
    ifstream in("lgput.in");
    ofstream out("lgput.out");
    in >> n >> p;
    out << putere(n, p);
}