Cod sursa(job #153418)

Utilizator megabyteBarsan Paul megabyte Data 10 martie 2008 15:23:59
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 kb
#include <stdio.h>
#define INF "lgput.in"
#define OUF "lgput.out"

const long clb=(long)1999999973;
long n,p;

long long logpow()
{
   long i;
   long long prod,ret;
   ret=1;prod=n;
   for(i=0;(1<<i)<=p;++i)
   {
      if(p&(1<<i)) ret=(ret*prod)%clb;
      prod=(prod*prod)%clb;
   }
   return ret%clb;
}

int main()
{
  FILE *in,*out;
  in=fopen(INF,"r");
  out=fopen(OUF,"w");
  fscanf(in,"%lu%lu",&n,&p);
  fprintf(out,"%llu",logpow());
  fclose(in);fclose(out);
  return 0;
}