Cod sursa(job #445013)

Utilizator irene_mFMI Irina Iancu irene_m Data 22 aprilie 2010 14:49:20
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <cstdio>
#define infile "lgput.in"
#define outfile "lgput.out"
#define ll long long
#define MOD 1999999973

ll N,P,rez;

ll lgput(ll val,ll p)
{
      if(p==1)
            return val%MOD;
      if(p%2==0)
      {
            val=lgput(val,p/2);
            val*=val; val%=MOD;
            return val;
      }
      else
      {
            val=lgput(val,(p-1)/2);
            val*=val; val%=MOD;
            val*=(N%MOD); val%=MOD;
            return val;
      }
}

int main()
{
      freopen(infile,"r",stdin);
      freopen(outfile,"w",stdout);

      scanf("%lld%lld",&N,&P);
      rez=lgput(N,P);
      printf("%lld\n",rez);

      fclose(stdin);
      fclose(stdout);
      return 0;
}