Cod sursa(job #445495)

Utilizator om6gaLungu Adrian om6ga Data 23 aprilie 2010 23:08:45
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator c Status done
Runda Arhiva educationala Marime 0.68 kb
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

long long putere(int n,int p)
{
     if (p==0) return (long long)1;
     if (p==1) return (long long)n;
     if (p%2==0) return putere(n,p/2)*putere(n,p/2);
     else return putere(n,p/2)*putere(n,p/2)*n;
     
     
     /*long long r=1;
     while (p>0) 
     {
        if (p%2==1) 
        {
            r*=n;
            p-=1;
        }
        n*=n;
        p/=2;
    }
    return r;*/
}


int main()
{
    FILE *in=fopen("lgput.in","r");
    FILE *out=fopen("lgput.out","w");   
    int n,p;
    fscanf(in,"%d %d",&n,&p);
    fprintf(out,"%lld",putere(n,p)%1999999973);
    fclose(in); fclose(out);
}