Cod sursa(job #1537195)

Utilizator Andrei501Clicinschi Andrei Andrei501 Data 26 noiembrie 2015 23:58:02
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.55 kb
#include <stdio.h>
#include <stdlib.h>

#define X 1999999973

int exp (long long a,long long b)
{
    if (b==0)
    {
        return 1;
    }
    if (b%2!=0)
    {
        return ((a%X)*(exp((a*a)%X,(b-1)/2)%X))%X;
    }
    return exp((a*a)%X,b/2)%X;
}

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

    long long N,P;
    fscanf (fin,"%lld",&N);
    fscanf (fin,"%lld",&P);

    fprintf (fout,"%lld\n",exp(N,P)%X);

    fclose (fin);
    fclose (fout);
    return 0;
}