Cod sursa(job #893855)

Utilizator Alexghita96Ghita Alexandru Alexghita96 Data 26 februarie 2013 18:17:11
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <stdio.h>

FILE *F = fopen("lgput.in", "r");
FILE *G = fopen("lgput.out", "w");

unsigned int n, p;
long long sol = 1, a;

void Citire()
{
    fscanf(F, "%d %d", &n, &p);
    fclose(F);
}

void Calc_Put()
{
    unsigned int i;
    a = n;
    for (i = 0; (1 << i) <= p; ++i)
    {
        if (((1 << i) & p) > 0)
            sol = (sol * a) % 1999999973;
        a = (a * a) % 1999999973;
    }
}

void Afisare()
{
    fprintf(G, "%lld\n", sol);
    fclose(G);
}

int main()
{
    Citire();
    Calc_Put();
    Afisare();
    return 0;
}