Cod sursa(job #291881)

Utilizator otilia_sOtilia Stretcu otilia_s Data 30 martie 2009 15:33:40
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 kb
// scriem n^p = suma(n^(2^i)), unde bitul i al lui n este nenul
#include <stdio.h>
#define MODULO 1999999973
unsigned long n,p;


void citire()
{
 FILE *fin=fopen("lgput.in","r");
 fscanf(fin,"%ld %ld",&n,&p);
 fclose(fin);
}

int main()
{
 citire();
 n%=MODULO;
 unsigned long long i,sol=1,a;
 a=n;
 for (i=0;(1<<i)<=p;++i)
  {
   if ((1<<i)&p) sol=(sol*a)%MODULO;
   a=(a*a)%MODULO;
  }

 FILE *fout=fopen("lgput.out","w");
 fprintf(fout,"%lld\n",sol);
 fclose(fout);
 return 0;
}