Cod sursa(job #3227187)

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

long fast_exp(long long x, long long n) {
    int rest = 1999999973;
    if(n < 0) {
        x = 1 / x; 
        n = -n;
    }

    if(n == 0) return 1;
    
    int y = 1;
    while(n > 1) {
        if(n % 2 != 0) {
            y = x * y;
            n--;
        }
        x *= x;
        n /= 2;
    }
    return x * y % rest;
}

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;
}