Cod sursa(job #1502238)

Utilizator andru47Stefanescu Andru andru47 Data 14 octombrie 2015 13:54:03
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.47 kb
#include <cstdio>
#define MOD 1999999973
using namespace std;
long long n,p;
long long putere(long long a , long long b)
{
    if (b<0) putere(1/n,(-1)*p)%MOD;
    else if (b==0) return 1;
    else if (b%2==0) return putere((1LL*a*a)%MOD,b/2)%MOD;
    else return a*putere(((1LL*a*a)%MOD,b/2),(b-1)/2)%MOD;
}
int main()
{
    freopen("lgput.in","r",stdin);
    freopen("lgput.out","w",stdout);
    scanf("%lld %lld",&n,&p);
    printf("%lld\n",putere(n,p));
}