Cod sursa(job #324840)

Utilizator alexandru92alexandru alexandru92 Data 17 iunie 2009 17:06:49
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.46 kb
#include<stdio.h>
#include<stdlib.h>
#define Modulo 1999999973
#define InFile "lgput.in"
#define OutFile  "lgput.out"
long long n,p,y,z;
int main()
{
    freopen(InFile,"rt",stdin);
    freopen(OutFile,"wt",stdout);
    scanf("%lld%lld",&n,&p);
    if(p==0||n<=1) {printf("1"); exit(0);}
    y=1; z=n;
    do
    {
        if((p&1))  y=(y*z)%Modulo ;
        z=(z*z)%Modulo;
        p=p>>1;
    }while(p);
    printf("%lld",y);
    return 0;
}