Cod sursa(job #234248)

Utilizator k_ounu_eddyIacob Eduard k_ounu_eddy Data 20 decembrie 2008 15:11:27
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<stdio.h>
//#include<conio.h>

long long N,P;
const unsigned int mod=1999999973;
unsigned int rezultat;

inline void pregateste()
{
FILE *pin=fopen("lgput.in","r");
fscanf(pin,"%lld",&N);
fscanf(pin,"%lld",&P);
fclose(pin);
}

int PutereMod(long long N,long long P)
{
if(P==1)
  return N%mod;
else
  {
  if(P%2==1)
    {
    P--;
    int aux=PutereMod(N,P/2);
    return ((aux%mod)*(aux%mod)*(N%mod))%mod;
    }
  else
    {
    int aux=PutereMod(N,P/2);
    return ((aux%mod)*(aux%mod))%mod;
    }
  }
}

inline void rezolva()
{
rezultat=PutereMod(N,P)%mod;
}

inline void incheie()
{FILE *pout=fopen("lgput.out","w");
fprintf(pout,"%ud",rezultat);
fclose(pout);}

int main()
{//clrscr();
//printf("%lld",N);getch();
pregateste();
rezolva();
incheie();
return 0;
}