Cod sursa(job #1112770)

Utilizator ionut_ungureanuUngureanu Vladut Ionut ionut_ungureanu Data 19 februarie 2014 23:41:43
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.44 kb
#include <cstdio>
#define FIN "lgput.in","r",stdin
#define FOUT "lgput.out","w",stdout
#define MOD 1999999973

using namespace std;

int N,P;

int logput(int N,int P)
{
    if(P==0)return 1;
    if(P==1)return N%MOD;
    if(P%2==0) return logput(N*N,P/2)%MOD;
    return N*logput(N*N,(P-1)/2)%MOD;
}

int main()
{
    freopen(FIN);
    freopen(FOUT);

    scanf("%d %d",&N,&P);

    printf("%d",logput(N,P));

    return 0;
}