Cod sursa(job #255906)

Utilizator PavelRazvanPavel Razvan PavelRazvan Data 10 februarie 2009 20:59:43
Problema Ridicare la putere in timp logaritmic Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.44 kb
#include<stdio.h>
#define ll long long unsigned
#define m 1999999973
ll n,p;
ll lgput (ll n,ll p)
{
    ll s;
    if(p==0)
    return 1;
    n%=m;
    s=lgput (n,p/2);
    if(p%2==0)
        s=((s%m)*(s%m))%m;
    else
        s=(n*(s%m)*(s%m))%m;
    return s;
}
int main ()
{
    freopen("lgput.in","r",stdin);
    freopen("lgput.out","w",stdout);
    scanf("%llu%llu",&n,&p);
    printf("%llu",lgput(n,p));
    return 0;
}