Cod sursa(job #1521142)

Utilizator bobocipMorun Bogdan bobocip Data 9 noiembrie 2015 22:37:13
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.53 kb
#include <stdio.h>

const long int mod = 1999999973;
long int n, p, res = 1, v[50], i, k;

int main()
{
    freopen("lgput.in", "r", stdin);
    freopen("lgput.out", "w", stdout);

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

    v[0] = n;
    for (i = 1, k = 2; k <= p; i++, k *= 2) {
        v[i] = ((long long)v[i - 1] * v[i - 1]) % mod;
    }

    for (; i >= 0; i--, k /= 2) {
        if (p >= k) {
            res = ((long long)res * v[i]) % mod;
            p -= k;
        }
    }

    printf("%ld", res);

    return 0;
}