Cod sursa(job #235445)

Utilizator k_ounu_eddyIacob Eduard k_ounu_eddy Data 23 decembrie 2008 22:17:52
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<stdio.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--;
    long long aux=PutereMod(N,P/2);
    return ((((aux%mod)*(aux%mod))%mod)*(N%mod))%mod;
    }
  else
    {
    long long 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,"%d",rezultat);
fclose(pout);}

int main()
{
pregateste();
rezolva();
incheie();
return 0;
}