Cod sursa(job #257869)

Utilizator PavelRazvanPavel Razvan PavelRazvan Data 14 februarie 2009 10:17:39
Problema Ridicare la putere in timp logaritmic Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.43 kb
#include<stdio.h>
#define ll long long unsigned
#define m 1999999973
ll n,p,s;
ll lgput (ll n,ll p)
{
    if(p==0)
    return 1;
    s=lgput(n%m,p/2);
    if(p%2==0)
        s=((s%m)*(s%m))%m;
    else
        s=((n%m)*(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;
}