Cod sursa(job #3233817)

Utilizator danyy13Perhaita Daniel danyy13 Data 5 iunie 2024 00:41:44
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.46 kb
#include <stdio.h>

#define DIV 1999999973

unsigned int expBySquaring(unsigned int n, unsigned int p) {
    if(p == 0) return 1;
    unsigned int y = 1;
    while(p > 1) {
        if(p % 2 != 0) {
            y = n * y;
            p = p - 1;
        }
        n = n * n;
        p = p / 2;
        n %= DIV;
    }
    return n * y;
}

int main() {
    unsigned int n = 0, p = 0;

    scanf("%u %u", &n, &p);

    printf("%u\n", expBySquaring(n, p));

    return 0;
}