Cod sursa(job #3227189)

Utilizator thek0derHorja Razvan thek0der Data 26 aprilie 2024 21:32:33
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.6 kb
#include <stdio.h>

long long fast_exp(long long n, long long p) {
    int rest = 1999999973;
    long long sol = 1;

    while(p) {
        if(p % 2 == 0) {
            p /= 2;
            n *= n;
            n %= rest;
        } else {
            p--;
            sol *= n;
            sol %= rest;
        }
    }
    return sol;
}

int main() {
    long long N, P;
    FILE *in = fopen("lgput.in", "r");
    FILE *out = fopen("lgput.out", "w");

    fscanf(in, "%lld %lld", &N, &P);
    fclose(in);

    fprintf(out, "%lld", fast_exp(N, P));
    fclose(out);

    return 0;
}