Cod sursa(job #1464053)

Utilizator linerunnerMihai Ion linerunner Data 22 iulie 2015 11:02:16
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator c Status done
Runda Arhiva educationala Marime 0.54 kb
#include <stdio.h>
#include <stdlib.h>
#define M 1999999973

long long fastexp(int n, int p)
{
    long long rez = 1;

    while ( p != 0 )
    {
        if ( p % 2 == 1 )
            rez = ( rez * n ) % M  ;
        n = ( n * n ) % M;
        p = p / 2;
    }

    return rez;
}

int main()
{
    FILE *f, *g;
    f = fopen("lgput.in", "r");
    g = fopen("lgput.out", "w");

    long long n, p;

    fscanf(f, "%lld %lld", &n, &p);

    fprintf(g, "%lld", fastexp(n, p));

    fclose(f);
    fclose(g);

    return 0;
}