Cod sursa(job #1244671)

Utilizator js3292618Andrei Mihai js3292618 Data 17 octombrie 2014 23:04:33
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator c Status done
Runda Arhiva educationala Marime 0.48 kb
#include <stdio.h>

#define IN "lgput.in"
#define OUT "lgput.out"

static const unsigned long mod = 1999999973;
static unsigned long n;

static unsigned long lgput(unsigned long p)
{
    if (p == 0)
        return 1;
    if (p == 1)
        return n;

    return lgput(p >> 1) % mod * lgput(p >> 1) % mod;
}

int main(void)
{
    unsigned long p;

    freopen(IN, "r", stdin);
    freopen(OUT, "w", stdout);

    scanf("%lu %lu", &n, &p);
    printf("%lu\n", lgput(p) % mod);

    return 0;
}