Cod sursa(job #1117171)

Utilizator PatrikStepan Patrik Patrik Data 23 februarie 2014 10:32:51
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
    #include<cstdio>
    using namespace std;
    #define mod 1999999973
    int N , P;

    int exp(int N , int P);

    int main()
    {
        freopen("lgput.in" , "r" , stdin );
        freopen("lgput.out" , "w" , stdout );
        scanf("%d %d" , &N , &P );
        printf("%d" , exp(N,P));
        return 0;
    }

    int exp(int N , int P)
    {
        if(P == 0)return 1;
        if(P==1)return N;
        if(P%2)return (1ll*N*exp((1LL*N*N)%mod,(P-1)/2)%mod)%mod;
        return exp((1ll*N*N)%mod,P/2)%mod;

    }