Cod sursa(job #629216)

Utilizator MariusMarius Stroe Marius Data 2 noiembrie 2011 21:16:43
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.43 kb
#include <cstdio>
using namespace std;

typedef long long i64;

const i64 Modulo = 1999999973;

i64 go(i64 n, i64 p) {
    i64 r = 1;
    for (i64 i = 31; i >= 0; -- i) {
        r = (r * r) % Modulo;
        if ((p >> i) & 1)
            r = (r * n) % Modulo;
    }
    return r;
}

int main(void) {
    i64 n, p;
    fscanf(fopen("lgput.in", "r"), "%lld %lld", &n, &p);
    fprintf(fopen("lgput.out", "w"), "%lld", go(n, p));
    return 0;
}